Självomdirigering med tillägg av parametrar i PHP
Låt på sidan index.php skickas
en GET-parameter med namnet arg.
Låt oss visa dess innehåll på skärmen:
<?php
echo $_GET['arg'];
?>
Låt vår sida utan GET-parameter
inte kunna fungera korrekt. I vårt fall
är det verkligen så, för om parametern
inte skickas kommer åtkomst till $_GET['arg']
att leda till ett fel.
Man kan undra varför en person överhuvudtaget hamnar på vår sida utan parametern? Vi kan ju överallt på vår webbplats sätta länkar med denna parameter. Men det är ingen garanti: användaren av vår webbplats kan till exempel kopiera länken någonstans ifrån och förlora parametern i processen. Eller bara av misstag ta bort den när hen redigerar adressfältet.
I alla fall bör vår kod förutsäga en sådan situation och göra något åt den. Vad kan man göra?
Man kan kontrollera om vår GET-parameter finns och bara visa den om den existerar:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// reagerar på något sätt, till exempel med ett meddelande
}
?>
Man kan göra på ett listigare sätt:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // standardvärde
}
echo $_GET['arg']; // kommer garanterat att visa något utan fel
?>
Eller så kan man göra så att när man kommer till sidan utan parameter sker en omdirigering till samma sida med parametern:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // parametern finns garanterat
?>
Berätta, vad är skillnaden mellan det andra alternativet och det tredje.
Låt på sidan page.php man kunna skicka
ett nummer med hjälp av en GET-parameter med namnet
num. Gör så att när man kommer till
sidan utan denna parameter, automatiskt utförs
en omdirigering till samma sida, men med parametern
num med värdet 1.