1. Erläuterungen
$_GET ist ein Array welches alle Parameter aus der vom Besucher aufgerufenen URL enthält. Lautet die aufgerufene URL etwa http://www.example.com/index.php?page=article&id=1015&design=normal, dann würde $_GET die folgenden Parameter enthalten:
- page = article
- id = 1015
- design = normal
Entsprechend wäre das $_GET-Array identisch mit array('page' => 'article', 'id' => '1015', 'design' => 'normal'). (Alle Parameterschlüssel und -werte werden im $_GET-Array als Strings abgespeichert.)
Das $_GET-Array ist eine superglobale Variable, kann also von überall im Skript jederzeit aufgerufen werden. Wurden keine Parameter übergeben, dann ist das Array zwar vorhanden, aber leer.
2. Beispiel: URL mit Parametern
Angenommen das nachfolgende Skript wird über http://www.example.com/test.php?func=show_message&message=hello_world aufgerufen:
<?php // Funktion zum Ausgeben einer vom Benutzer uebergebenen Nachricht function showMessage($msg) { // da die Nachricht vom Benutzer uebergeben wurde darf dem Inhalt hier nicht blind vertraut werden // HTML-Steuerungszeichen werden daher codiert echo( htmlentities($msg, ENT_QUOTES, 'UTF-8') ); } // Parameter "func" auslesen // Achtung: dieser Parameter koennte vielleicht nicht uebergeben worden sein // (URL waere dann z.B.: http://www.example.com/test.php?message=hello_world) // daher is hier auch zu pruefen, ob er ueberhaupt vorhanden ist $func = (isset($_GET['func']) ? $_GET['func'] : ''); switch ($func) { // show_message als Wert fuer func // es soll eine Nachricht ausgegeben werden case 'show_message': $message = (isset($_GET['message']) ? $_GET['message'] : ''); showMessage($message); break; // ... hier koennten weitere case's eingefuegt werden, // sodass der Besucher andere Funktionen aufrufen kann // default-Ausgabe falls Funktion unbekannt/nicht uebergeben default: echo("Keine Funktion ausgewaehlt!"); } ?>
hello_world
3. Beispiel: GET-basiertes Formular
Im nächsten Beispiel soll ein kleines Formular gebaut werden, welches seine Daten per GET sendet.
Sobald das Formular abgesendet wird, werden die Eingaben des Formulars automatisch vom Browser als Parameter an die URL gehängt. Es gibt daher für den PHP-Code keinen Unterschied zwischen dem Absenden des Formulars und dem direkten Aufruf per URL mit Parametern.
<?php if (isset($_GET['keywords'])) { echo('Es wurde nach ' . htmlentities($_GET['keywords'], ENT_QUOTES, 'UTF-8') . ' gesucht.<br />'."\n"); echo('Ergebnisse: Keine.'); } ?> <form method="get" action="?"> <input type="text" name="keywords" /> <input type="submit" value="suchen" /> </form>
Ausgabe vor dem Absenden des Formulars:
<form method="get" action="?"> <input type="text" name="keywords" /> <input type="submit" value="suchen" /> </form>
Ausgabe nach dem Absenden des Formulars (mit Eingabe „hello, world”):
Es wurde nach hello, world gesucht.<br /> Ergebnisse: Keine. <form method="get" action="?"> <input type="text" name="keywords" /> <input type="submit" value="suchen" /> </form>