Vetë-ridrejtimi me shtim të parametrave në PHP
Le të supozojmë se në faqen index.php transmetohet
një parametër GET me emrin arg.
Le të shfaqim përmbajtjen e tij në ekran:
<?php
echo $_GET['arg'];
?>
Le të supozojmë se faqja jonë nuk mund të funksionojë si duhet
pa parametrin GET.
Në rastin tonë kjo është e vërtetë, sepse nëse parametri
nuk transmetohet, atëherë aksesi në $_GET['arg']
do të shkaktojë një gabim.
Mund të lindë pyetja, pse në përgjithësi një person do të përfundojë në faqen tonë pa parametër? Në fund të fundit ne mund të vendosim lidhje kudo në faqen tonë me këtë parametër. Megjithatë, kjo nuk është garanci: përdoruesi i faqes sonë mund, për shembull, të kopjojë nga diku lidhjen dhe ta humbë parametrin. Ose thjesht ta fshijë rastësisht, duke edituar shiritin e adresave.
Në përgjithësi, në çdo rast kodi ynë duhet të parashikojë një situatë të tillë dhe të bëjë diçka me të. Çfarë mund të bëhet?
Mund të kontrollojmë nëse parametri ynë GET ekziston dhe ta shfaqim atë, vetëm nëse ekziston:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// reagojmë në një farë mënyre, p.sh. me një mesazh
}
?>
Mund të bëhet më dinak:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // vlera e paracaktuar
}
echo $_GET['arg']; // garanton se do të shfaqë diçka pa gabim
?>
Ose mund të bëhet që kur hyni në faqe pa parametër të kryhet një ridrejtim në të njëjtën faqe me parametër:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // parametri është i garantuar të jetë i pranishëm
?>
Shpjegoni, cili është ndryshimi midis variantit të dytë dhe të tretë.
Le të supozojmë se në faqen page.php mund të transmetohet
një numër me anë të parametrit GET me emrin
num. Bëni që kur hyni
pa këtë parametër, automatikisht të kryhet
ridrejtimi në të njëjtën faqe, por me parametrin
num me vlerën 1.