Superglobale Variablen (Thema: PHP Beispiele)

Welche superglobalen Variablen (Superglobals) es in PHP gibt, welche Daten diese enthalten und wie sie verwendet werden

1. Erläuterungen

Superglobale Variablen (auch: Superglobals) sind Variablen, auf die von überall im Skript jederzeit zugegriffen werden kann. Sie liegen also im globalen Geltungsbereich und die Anwendung des Schlüsselworts „global” bzw. der Zugriff über $GLOBALS ist nicht notwendig. Die wahrscheinlich wichtigsten superglobalen Variablen sind $_GET und $_POST, welche vom Benutzer gesendete Daten enthalten. Im einzelnen gibt es folgende nennenswerte Superglobals (einige weitere existieren noch, welche allerdings kaum Bedeutung haben oder schon veraltet sind):

  • $_GET: Alle Anfrageparameter aus der URL. Beispielsweise lauten bei der URL http://www.example.com/page.php?foo=bar&test=123 die GET-Parameter „foo” (mit Wert „bar”) und „test” (mit Wert „123”)
  • $_POST: Alle per HTTP-POST gesendete Parameter. Üblicherweise werden diese vom Benutzer gesendet, sobald er ein ausgefülltes Formular abschickt bei dem das Attribut „method” auf „post” gestellt wurde.
  • $GLOBALS: Alle im Skript definierten globalen Variablen werden in diesem Array platziert.
  • $_SERVER: Alle vom Webserver generierten Daten, etwa aufgerufene URL, IP des Benutzers oder Dateipfade.
  • $_COOKIE: Vom Besucher gesendete Cookies.
  • $_SESSION: Die Daten der Session des Besuchers. Eine Session dient zum Speichern von Daten über mehrere Seitenaufrufe hinweg.
  • $_FILES: Vom Besucher gesendete Dateien.

2. Beispiel: $_GET

Ausgehend davon, dass eine Datei test.php existiert und diese aufgerufen wird mit test.php?foo=bar&test=123&beispiel:

PHP-Code
<?php
	// Datei aufgerufen via test.php?foo=bar&test=123&beispiel


	// Ausgeben aller GET-Parameter
	var_dump($_GET);
	
	// Auf einzelne Parameter kann ebenfalls zugegriffen werden
	echo('foo: ' . $_GET['foo'] . "\n");
	echo('test: ' . $_GET['test']);
?>

HTML-Code: Ausgabe
array(3) {
  ["foo"]=>
  string(3) "bar"
  ["test"]=>
  string(3) "123"
  ["beispiel"]=>
  string(0) ""
}
foo: bar
test: 123

3. Beispiel: $_POST

Nachfolgendes Beispiel zeigt ein kurzes Formular, welches seine Daten per POST sendet. Nach Absenden des Formulars wird der Inhalt des Eingabefeldes angezeigt.

PHP-Code
<form action="" method="post">
	<input type="text" name="foo" value="bar" />
	<input type="submit" />
</form>

<?php
	if (isset($_POST['foo'])) {
		echo('foo: ' . $_POST['foo'] . "\n");
	}
?>

Ausgabe vor dem Absenden des Formulars:

HTML-Code: Ausgabe
<form action="" method="post">
	<input type="text" name="foo" value="bar" />
	<input type="submit" />
</form>



Ausgabe nach dem Absenden des Formulars (vorausgesetzt das Eingabefeld bleibt unverändert auf „bar”):

HTML-Code: Ausgabe
<form action="" method="post">
	<input type="text" name="foo" value="bar" />
	<input type="submit" />
</form>

foo: bar


4. Beispiel: $GLOBALS

In diesem Beispiel wird eine Variable in das $GLOBALS-Array geschrieben und von der Funktion echoMyGlobal() abgerufen, die normalerweise keinen Zugriff auf diese Variable hätte, würde sie nicht im besagten Array liegen.

PHP-Code
<?php
	$GLOBALS['myGlobal'] = 'beispiel';

	function echoMyGlobal() {
		echo('myGlobal: ' . $GLOBALS['myGlobal'] . "\n");
	}

	echoMyGlobal();
?>

HTML-Code: Ausgabe
myGlobal: beispiel


5. Beispiel: $_SERVER

In diesem Beispiel wird auf die superglobale Variable $_SERVER zurückgegriffen, um Informationen über die IP-Adresse des Aufrufers, die Aufrufmethode und die aktuelle PHP-Datei zu ermitteln.

PHP-Code
<?php
	var_dump($_SERVER['REMOTE_ADDR']);
	var_dump($_SERVER['REQUEST_METHOD']);
	var_dump($_SERVER['PHP_SELF']);
?>

HTML-Code: Ausgabe
string(9) "127.0.0.1"
string(3) "GET"
string(9) "/test.php"


6. Beispiel: $_COOKIE

Mittels setcookie() wird ein Cookie gesetzt, welches wiederum über $_COOKIE (eine Superglobale) ausgelesen wird. Beim ersten Seitenaufruf wird das Cookie gesetzt und kann daher noch nicht aus $_COOKIE ausgelesen werden. Beim zweiten Aufruf steht es zur Verfügung (vorausgesetzt Cookies sind beim Besucher aktiviert).

PHP-Code
<?php
	setcookie('mycookie', 'some_value');

	if (isset($_COOKIE['mycookie'])) {
		echo('mycookie: ' . $_COOKIE['mycookie']);
	} else {
		echo('mycookie nicht gefunden.');
	}
?>

Ausgabe beim ersten Seitenaufruf:

HTML-Code: Ausgabe
mycookie nicht gefunden.

Ausgabe beim zweiten Seitenaufruf:

HTML-Code: Ausgabe
mycookie: some_value

7. Beispiel: $_SESSION

Über die Funktion session_start() wird zunächst eine $_SESSION gestartet. Dies ist zwangsweise notwendig, andernfalls gehen die Informationen in $_SESSION verloren falls noch keine Session gestartet worden war oder werden nicht erneut eingeladen, falls für den Besucher kürzlich schon eine Session gestartet wurde. Nach dem starten/einladen der Session wird geprüft, ob der Wert „time” bereits gesetzt wurde. Falls nicht, wird er auf die aktuelle Uhrzeit gesetzt. Sonst wird er ausgegeben. Beim ersten Aufruf der Seite erhält man daher nur die Meldung, dass die Zeit gesetzt wurde. Erst ab dem zweiten Aufruf wird die Uhrzeit angezeigt, welche auch für alle folgenden Aufrufe konstant bleibt. (Bei einem simplen Neuladen der Seite ist es Voraussetzung, Cookies aktiviert zu haben.)

PHP-Code
<?php
	session_start();

	if (!isset($_SESSION['time'])) {
		$_SESSION['time'] = date('H:i:s');
		echo('Zeit gesetzt.');
	} else {
		var_dump($_SESSION['time']);
	}
?>

Ausgabe beim ersten Aufruf:

HTML-Code: Ausgabe
Zeit gesetzt.

Ausgabe beim zweiten Aufruf:

HTML-Code: Ausgabe
string(8) "19:52:47"


Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung. OK