$_GET verwenden (Thema: PHP Beispiele)

Bedeutung und Anwendung des superglobalen $_GET-Arrays, insbesondere im Zusammenhang mit Formularen

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-Code
<?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!");
	}
?>

HTML-Code: Ausgabe
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.

wichtig
GET sollte bei Formularen nur verwendet werden, wenn es um kleine Datenmengen geht, da alle Daten an die URL gehängt werden. Ein Beispiel dafür könnte eine Suchfunktion sein, bei welcher in der Regel nur etwa ein bis vier Wörter eingegeben werden.
PHP-Code
<?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:

HTML-Code: Ausgabe
<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”):

HTML-Code: Ausgabe
Es wurde nach hello, world gesucht.<br />
Ergebnisse: Keine.
<form method="get" action="?">
	<input type="text" name="keywords" />
	<input type="submit" value="suchen" />
</form>

Kommentare (0)

Von neu nach alt