Pašnovirzīšanās ar parametru pievienošanu PHP
Lai lapā index.php tiek nodots
GET parametrs ar nosaukumu arg.
Izvadīsim tā saturu uz ekrāna:
<?php
echo $_GET['arg'];
?>
Pieņemsim, ka mūsu lapa bez GET parametra
nevar darboties korekti. Mūsu gadījumā
tā patiešām ir, jo, ja parametrs
nav nodots, tad piekļuve $_GET['arg']
izraisīs kļūdu.
Var rasties jautājums, kāpēc vispār cilvēks var nokļūt mūsu lapā bez parametra? Galu galā mēs visur savā vietnē varam ievietot saites ar šo parametru. Tomēr tas nav garantija: mūsu vietnes lietotājs var, piemēram, kopēt saiti no kaut kurienes un zaudēt parametru. Vai arī vienkārši nejauši to izdzēst, rediģējot adreses joslu.
Kopumā, jebkurā gadījumā mūsu kodam jāparedz šāda situācija un kaut kas ar to jādara. Ko tad var izdarīt?
Var pārbaudīt mūsu GET parametra esamību un izvadīt to, tikai ja tāds pastāv:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// kā reaģēt, piemēram, ar paziņojumu
}
?>
Var rīkoties viltīgāk:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // noklusējuma vērtība
}
echo $_GET['arg']; // garantēti kaut ko izvadīs bez kļūdas
?>
Var izdarīt tā, lai, ienākot lapā bez parametra, notiktu novirzīšana uz šo pašu lapu ar parametru:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // parametrs garantēti ir
?>
Pastāstiet, kāda atšķirība ir starp otro variantu un trešo.
Pieņemsim, ka lapā page.php var nodot
skaitli, izmantojot GET parametru ar nosaukumu
num. Izveidojiet tā, lai, ienākot
bez šī parametra, automātiski tiktu veikta
novirzīšana uz šo pašu lapu, bet ar parametru
num ar vērtību 1.