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:
<?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:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// nějak reagujeme, například zprávou
}
?>
Můžeme postupovat chytřeji:
<?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:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // parametr je garantovaně přítomen
?>
Vysvětlete, v čem se liší druhá varianta od třetí.
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.