PHP iseümbersuunamine parameetrite lisamisega
Oletame, et lehel index.php edastatakse
GET parameeter nimega arg.
Kuvame selle sisu ekraanil:
<?php
echo $_GET['arg'];
?>
Oletame, et meie leht ilma GET parameetrita
ei saa korrektselt töötada. Meie juhul
see kehtib tõesti, sest kui parameeter
ei ole edastatud, siis juurdepääs $_GET['arg']
põhjustab vea.
Võib tekkida küsimus, miks üldse inimene jõuab meie lehele ilma parameetrita? Lõppude lõpuks võime me kõikjal oma saidil panna lingid selle parameetriga. Siiski, see ei ole garantii: meie saidi kasutaja võib näiteks kuskilt linki kopeerida ja kaotada selle käigus parameetri. Või lihtsalt kogemata selle kustutada, aadressiriba muutes.
Üldjuhul peaks meie kood igal juhul eeldama sellist olukorda ja midagi sellega ette võtma. Mida siis teha saab?
Saame kontrollida meie GET parameetri olemasolu ja kuvada seda ainult siis, kui see on olemas:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// reageerime kuidagi, näiteks teatega
}
?>
Võib läheneda saledamalt:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // vaikeväärtus
}
echo $_GET['arg']; // garanteeritult midagi väljastab veata
?>
Või saab teha nii, et lehele ilma parameetrita sisenedes toimub ümbersuunamine samale lehele parameetriga:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // parameeter on garanteeritult olemas
?>
Kirjelda, milles erineb teine variant kolmandast.
Oletame, et lehel page.php saab edastada
numbri kasutades GET parameetrit nimega
num. Tehke nii, et sisenemisel
ilma antud parameetrita, teostatakse automaatselt
ümbersuunamine samale lehele, kuid parameetriga
num väärtusega 1.