Samopreusmeravanje sa dodavanjem parametara u PHP
Neka se na stranici index.php prosleđuje
GET parametar sa imenom arg.
Ispišimo njegov sadržaj na ekran:
<?php
echo $_GET['arg'];
?>
Neka naša stranica bez GET parametra
ne može da radi ispravno. U našem slučaju
to je zaista tako, jer, ako parametar
nije prosleđen, onda će pristupanje $_GET['arg']
dovesti do greške.
Može se postaviti pitanje, zašto bi uopšte neko došao na našu stranicu bez parametra? Pošto mi možemo svuda na našem sajtu da postavimo linkove sa ovim parametrom. Međutim, to nije garancija: korisnik našeg sajta može, na primer, da kopira otkud god link i da pri tome izgubi parametar. Ili ga prosto slučajno obriše, uređujući adresnu traku.
Uglavnom, u svakom slučaju naš kod treba da pretpostavi takvu situaciju i da nešto uradi po tom pitanju. Šta može da se uradi?
Možemo da proverimo naš GET parametar na postojanje i da ga ispišemo, samo ako on postoji:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// nekako reagiramo, na primer, porukom
}
?>
Možemo postupiti lukavo:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'podrazumevano'; // podrazumevana vrednost
}
echo $_GET['arg']; // garantovano će nešto ispisati bez greške
?>
A možemo da uradimo tako da pri dolasku na stranicu bez parametra dođe do preusmeravanja na tu istu stranicu sa parametrom:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=podrazumevano');
}
echo $_GET['arg']; // parametar je garantovano prisutan
?>
Objasnite, po čemu se drugi varijant razlikuje od trećeg.
Neka se na stranici page.php može proslediti
broj pomoću GET parametra sa imenom
num. Uredite tako da pri dolasku
bez ovog parametra, automatski se izvrši
preusmeravanje na tu istu stranicu, ali sa parametrom
num u vrednosti 1.