Samoprzekierowanie z dodawaniem parametrów w PHP

Załóżmy, że na stronie index.php przekazywany jest parametr GET o nazwie arg. Wyświetlmy jego zawartość na ekranie:

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

Załóżmy, że nasza strona bez parametru GET nie może działać poprawnie. W naszym przypadku faktycznie tak jest, ponieważ jeśli parametr nie został przekazany, to odwołanie do $_GET['arg'] spowoduje błąd.

Może pojawić się pytanie, dlaczego w ogóle użytkownik trafi na naszą stronę bez parametru? Przecież możemy wszędzie na naszej stronie internetowej umieszczać linki z tym parametrem. Jednak to nie jest gwarancja: użytkownik naszej strony może, na przykład, skopiować gdzieś link i przy tym stracić parametr. Albo po prostu przypadkowo go usunąć, edytując pasek adresu.

W każdym razie, nasz kod powinien zakładać taką sytuację i coś z nią zrobić. Co można zrobić?

Można sprawdzać istnienie naszego parametru GET i wyświetlać go tylko wtedy, gdy istnieje:

index.php<?php
  if (isset($_GET['arg'])) {
    echo $_GET['arg'];
  } else {
    // w jakiś sposób reagujemy, na przykład komunikatem
  }
?>

Można postąpić sprytniej:

index.php<?php
  if (!isset($_GET['arg'])) {
    $_GET['arg'] = 'default'; // wartość domyślna
  }
  
  echo $_GET['arg']; // gwarantowanie coś wyświetli bez błędu
?>

A można zrobić tak, aby przy wejściu na stronę bez parametru następowało przekierowanie na tę samą stronę z parametrem:

index.php<?php
  if (!isset($_GET['arg'])) {
    header('Location: ?arg=default');
  }
  
  echo $_GET['arg']; // parametr jest gwarantowany
?>
Задание 1

Opowiedz, na czym polega różnica między drugim wariantem a trzecim.

Задание 2

Załóżmy, że na stronie page.php można przekazać liczbę za pomocą parametru GET o nazwie num. Zrób tak, aby przy wejściu bez tego parametru, automatycznie wykonywało się przekierowanie na tę samą stronę, ale z parametrem num o wartości 1.