Самопрерасување со додавање параметри во 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.