Automatické presmerovanie s pridaním parametrov v PHP
Nech na stránke index.php sa odovzdáva
GET parameter s názvom arg.
Vypíšme jeho obsah na obrazovku:
<?php
echo $_GET['arg'];
?>
Nech naša stránka bez GET parametra
nemôže korektne fungovať. V našom prípade
je to naozaj tak, pretože ak parameter
nie je odovzdaný, tak prístup k $_GET['arg']
povedie k chybe.
Môže vzniknúť otázka, prečo vôbec človek príde na našu stránku bez parametra? Veď môžeme všade na našom webe umiestniť odkazy s týmto parametrom. Avšak, to nie je záruka: používateľ nášho webu môže napríklad kopírovať odniekiaľ odkaz a pritom stratiť parameter. Alebo ho jednoducho náhodne odstrániť pri úprave adresného riadku.
Vo všeobecnosti, v každom prípade náš kód by mal predpokladať takúto situáciu a niečo s ňou urobiť. Čo sa dá urobiť?
Môžeme skontrolovať existenciu nášho GET parametra a vypísať ho, len ak existuje:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// nejako zareagujeme, napríklad správou
}
?>
Môžeme postupovať prefíkanešie:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // predvolená hodnota
}
echo $_GET['arg']; // garantovane niečo vypíše bez chyby
?>
Alebo môžeme urobiť tak, aby pri príchode na stránku bez parametra došlo k presmerovaniu na tú istú stránku s parametrom:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // parameter je garantovane prítomný
?>
Vysvetlite, v čom je rozdiel medzi druhou možnosťou a treťou.
Nech na stránke page.php je možné odovzdať
číslo pomocou GET parametra s názvom
num. Zabezpečte, aby pri príchode
bez tohto parametra sa automaticky vykonalo
presmerovanie na tú istú stránku, ale s parametrom
num s hodnotou 1.