Selv-omdirigering med tilføjelse af parametre i PHP
Lad på siden index.php blive transmitteret
en GET-parameter med navnet arg.
Lad os udskrive dens indhold på skærmen:
<?php
echo $_GET['arg'];
?>
Lad vores side uden GET-parameter
ikke kunne fungere korrekt. I vores tilfælde
er dette virkelig sådan, for hvis parameteren
ikke er transmitteret, vil adgang til $_GET['arg']
føre til en fejl.
Der kan opstå et spørgsmål: hvorfor overhovedet vil en person komme ind på vores side uden parameter? Vi kan jo overalt på vores hjemmeside sætte links med denne parameter. Dette er dog ikke en garanti: brugeren af vores hjemmeside kan for eksempel kopiere et link et sted fra og miste derved parameteren. Eller bare ved et uheld slette den, når han redigerer adresselinjen.
Kort sagt, under alle omstændigheder bør vores kode forudsige en sådan situation og gøre noget ved den. Hvad kan man gøre?
Man kan kontrollere vores GET-parameter for eksistens og kun udskrive den, hvis den eksisterer:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// reagér på en eller anden måde, for eksempel med en besked
}
?>
Man kan gøre det mere smart:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // standardværdi
}
echo $_GET['arg']; // garanterer at udskrive noget uden fejl
?>
Man kan også gøre sådan, at når man kommer ind på siden uden en parameter, sker der en omdirigering til den samme side med en parameter:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // parameteren er garanteret til stede
?>
Fortæl, hvad forskellen er mellem den anden mulighed og den tredje.
Lad på siden page.php man kan transmittere
et tal ved hjælp af en GET-parameter med navnet
num. Gør sådan, at når man kommer ind
uden denne parameter, udføres der automatisk
en omdirigering til den samme side, men med parameteren
num med værdien 1.