Itselleen uudelleenohjaus parametrien lisäämisellä PHP:ssä
Oletetaan, että sivulla index.php välitetään
GET-parametri nimeltä arg.
Tuodaan sen sisältö näytölle:
<?php
echo $_GET['arg'];
?>
Oletetaan, että sivuamme ei voida toimia oikein
ilman GET-parametria.
Meidän tapauksessamme
tämä on todella niin, koska jos parametria
ei ole välitetty, niin viittaus $_GET['arg']
johtaa virheeseen.
Saatetaan kysyä, miksi ihminen yleensäkään päätyy sivuillemme ilman parametria? Loppujen lopuksi voimme laittaa kaikkialle sivustollemme linkkejä tällä parametrilla. Tämä ei kuitenkaan ole takuu: sivustomme käyttäjä voi esimerkiksi kopioida jostain linkin ja menettää samalla parametrin. Tai vain vahingossa poistaa sen, muokatessaan osoiteriviä.
Yleisesti ottaen, missä tahansa tapauksessa koodimme tulisi olettaa tällainen tilanne ja tehdä sillä jotain. Mitä voi tehdä?
Voimme tarkistaa GET-parametrimme olemassaolon ja tuoda sen näytölle vain, jos se on olemassa:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// jotenkin reagoidaan, esimerkiksi viestillä
}
?>
Voi toimia ovelammin:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // oletusarvo
}
echo $_GET['arg']; // takuu, että jotain tulostuu ilman virhettä
?>
Tai voidaan tehdä niin, että kun siirrytään sivulle ilman parametria, tapahtuu uudelleenohjaus samalle sivulle parametrin kanssa:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // parametri on taatusti olemassa
?>
Kertokaa, mitä eroa on toisella vaihtoehdolla ja kolmannella.
Oletetaan, että sivulla page.php voidaan välittää
luku GET-parametrin avulla nimeltä
num. Tee niin, että kun siirrytään
ilman tätä parametria, suoritetaan automaattisesti
uudelleenohjaus samalle sivulle, mutta parametrilla
num arvossa 1.