Automatické přesměrování s přidáním parametrů v PHP

Předpokládejme, že na stránce index.php je předán GET parametr s názvem arg. Vypišme jeho obsah na obrazovku:

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

Předpokládejme, že naše stránka bez GET parametru nemůže fungovat správně. V našem případě to skutečně platí, protože pokud parametr není předán, přístup k $_GET['arg'] povede k chybě.

Může vyvstat otázka, proč by se člověk vůbec dostal na naši stránku bez parametru? Vždyť můžeme všude na našem webu dávat odkazy s tímto parametrem. To však není záruka: uživatel našeho webu může například zkopírovat odkaz odněkud a přitom ztratit parametr. Nebo jej jednoduše náhodně smazat při úpravě adresního řádku.

Obecně, v každém případě by náš kód měl předpokládat takovou situaci a něco s ní udělat. Co se s tím dá udělat?

Můžeme zkontrolovat existenci našeho GET parametru a vypisovat jej pouze tehdy, pokud existuje:

index.php<?php
  if (isset($_GET['arg'])) {
    echo $_GET['arg'];
  } else {
    // nějak reagujeme, například zprávou
  }
?>

Můžeme postupovat chytřeji:

index.php<?php
  if (!isset($_GET['arg'])) {
    $_GET['arg'] = 'default'; // výchozí hodnota
  }
  
  echo $_GET['arg']; // garantovaně něco vypíše bez chyby
?>

Nebo můžeme udělat to, aby při vstupu na stránku bez parametru došlo k přesměrování na stejnou stránku s parametrem:

index.php<?php
  if (!isset($_GET['arg'])) {
    header('Location: ?arg=default');
  }
  
  echo $_GET['arg']; // parametr je garantovaně přítomen
?>
Задание 1

Vysvětlete, v čem se liší druhá varianta od třetí.

Задание 2

Předpokládejme, že na stránce page.php lze předat číslo pomocí GET parametru s názvem num. Zařiďte, aby při vstupu bez tohoto parametru došlo automaticky k přesměrování na tutéž stránku, ale s parametrem num s hodnotou 1.