Zelfredirectie met toevoeging van parameters in PHP
Stel dat op de pagina index.php een
GET parameter met de naam arg wordt doorgegeven.
Laten we de inhoud ervan op het scherm weergeven:
<?php
echo $_GET['arg'];
?>
Stel dat onze pagina zonder GET parameter
niet correct kan werken. In ons geval
is dit inderdaad zo, omdat, als de parameter
niet is doorgegeven, toegang tot $_GET['arg']
tot een fout leidt.
Er kan een vraag rijzen, waarom zou een persoon überhaupt op onze pagina terechtkomen zonder parameter? Immers, we kunnen overal op onze website links plaatsen met deze parameter. Dit is echter geen garantie: een gebruiker van onze site kan bijvoorbeeld een link van ergens kopiëren en daarbij de parameter verliezen. Of deze per ongeluk verwijderen tijdens het bewerken van de adresbalk.
Kortom, in elk geval moet onze code een dergelijke situatie veronderstellen en er iets mee doen. Wat kunnen we dan doen?
We kunnen onze GET parameter controleren op bestaan en deze alleen weergeven als hij bestaat:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// reageer op een bepaalde manier, bijvoorbeeld met een bericht
}
?>
We kunnen het slimmer aanpakken:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // standaardwaarde
}
echo $_GET['arg']; // geeft gegarandeerd iets weer zonder fout
?>
Of we kunnen het zo maken dat bij toegang tot de pagina zonder parameter een redirect naar dezelfde pagina mét parameter plaatsvindt:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // parameter is gegarandeerd aanwezig
?>
Leg uit wat het verschil is tussen de tweede variant en de derde.
Stel dat op de pagina page.php een
getal kan worden doorgegeven met behulp van een GET parameter met de naam
num. Zorg ervoor dat bij toegang
zonder deze parameter, automatisch een
redirect naar dezezelfde pagina wordt uitgevoerd, maar met de parameter
num met de waarde 1.