Selbstredirect mit Hinzufügen von Parametern in PHP
Angenommen, auf der Seite index.php wird
ein GET-Parameter mit dem Namen arg übergeben.
Lassen wir seinen Inhalt auf dem Bildschirm ausgeben:
<?php
echo $_GET['arg'];
?>
Angenommen, unsere Seite ohne GET-Parameter
kann nicht korrekt arbeiten. In unserem Fall
ist das tatsächlich so, denn wenn der Parameter
nicht übergeben wurde, führt der Zugriff auf $_GET['arg']
zu einem Fehler.
Es könnte die Frage aufkommen, warum überhaupt jemand auf unsere Seite ohne Parameter gelangt? Schließlich können wir überall auf unserer Website Links mit diesem Parameter setzen. Das ist jedoch keine Garantie: Ein Benutzer unserer Website könnte beispielsweise einen Link von irgendwoher kopieren und dabei den Parameter verlieren. Oder ihn einfach versehentlich löschen, während er die Adressleiste bearbeitet.
Kurz gesagt, in jedem Fall sollte unser Code eine solche Situation voraussetzen und etwas damit tun. Was kann man tun?
Man kann unseren GET-Parameter auf Existenz prüfen und ihn nur ausgeben, wenn er existiert:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// irgendwie reagieren, z.B. mit einer Meldung
}
?>
Man kann es schlauer machen:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // Standardwert
}
echo $_GET['arg']; // gibt garantiert etwas aus ohne Fehler
?>
Oder man kann es so machen, dass beim Aufruf der Seite ohne Parameter ein Redirect auf die gleiche Seite mit Parameter erfolgt:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // Parameter ist garantiert vorhanden
?>
Erklären Sie, worin der Unterschied zwischen der zweiten Variante und der dritten liegt.
Angenommen, auf der Seite page.php kann eine
Zahl mit Hilfe des GET-Parameters mit dem Namen
num übergeben werden. Sorgen Sie dafür, dass beim Aufruf
ohne diesen Parameters automatisch ein
Redirect auf diese Seite erfolgt, aber mit dem Parameter
num mit dem Wert 1.