Самарэдырэкцыя з дабаўленнем параметраў у PHP

Няхай на старонцы index.php перадаецца GET параметр з імем arg. Вывядзем яго змест на экран:

index.php<?php
  echo $_GET['arg'];
?>

Няхай наша старонка без GET параметра не можа працаваць карэктна. У нашым выпадку гэта сапраўды так, бо калі параметр не перададзены, то зварот да $_GET['arg'] прыведзе да памылкі.

Можа ўзнікнуць пытанне, чаму ўвогуле чалавек трапіць на нашу старонку без параметра? Адже мы можам усюды на нашым сайце ставіць спасылкі з гэтым параметрам. Аднак, гэта не гарантыя: юзэр нашага сайта можа, напрыклад, капіяваць адкуль-небудзь спасылку і страціць пры гэтым параметр. Ці проста выпадкова яго выдаліць, рэдагуючы адрасны радок.

Увогуле, у любым выпадку наш код павінен прадугледжваць такую сітуацыю і нешта з ёй зрабіць. Што ж можна зрабіць?

Можна правяраць наш GET параметр на існаванне і выводзіць яго, толькі калі ён існуе:

index.php<?php
  if (isset($_GET['arg'])) {
    echo $_GET['arg'];
  } else {
    // нешта робім, напрыклад, паведамленнем
  }
?>

Можна паступіць хітрэй:

index.php<?php
  if (!isset($_GET['arg'])) {
    $_GET['arg'] = 'default'; // значэнне па змаўчанні
  }
  
  echo $_GET['arg']; // гарантавана нешта выведе без памылкі
?>

А можна зрабіць так, каб пры заходзе на старонку без параметра адбыўся рэдырэкт на гэтую ж старонку з параметрам:

index.php<?php
  if (!isset($_GET['arg'])) {
    header('Location: ?arg=default');
  }
  
  echo $_GET['arg']; // параметр гарантавана ёсць
?>
Задание 1

Раскажыце, у чым адрозненне другога варыянту ад трэцяга.

Задание 2

Няхай на старонцы page.php можна перадаць лік з дапамогай GET параметра з імем num. Зрабіце так, каб пры заходзе без гэтага параметра, аўтаматычна выконваўся рэдырэкт на гэтую ж старонку, але з параметрам num у значэнні 1.