Signatur
Beschreibung
PHP stellt eine Reihe von vordefinierten Array-Variablen bereit, die sogenannten Superglobalen. Im Gegensatz zu normalen globalen Variablen müssen sie innerhalb von Funktionen und Methoden nicht mit dem Schlüsselwort global importiert werden – sie sind in jedem Gültigkeitsbereich automatisch verfügbar.
$GLOBALS– Referenz auf alle globalen Variablen des aktuellen Skripts.$_SERVER– Informationen über Server und Ausführungsumgebung (Headerdaten, Pfade, Skriptdatei etc.).$_GET– Per URL-Query-String übermittelte Variablen (HTTP GET).$_POST– Per HTTP-POST-Body übermittelte Variablen.$_FILES– Informationen zu hochgeladenen Dateien.$_COOKIE– Per HTTP-Cookie übermittelte Variablen.$_SESSION– Sitzungsvariablen (nachsession_start()verfügbar).$_REQUEST– Zusammenführung aus$_GET,$_POSTund$_COOKIE.$_ENV– Per Umgebung an das Skript übergebene Variablen.
Superglobale werden von PHP selbst befüllt und stehen ab PHP 4.1.0 zur Verfügung. Da sie Benutzereingaben enthalten können, müssen ihre Inhalte immer validiert und bereinigt werden, bevor sie weiterverarbeitet werden.
Es ist nicht möglich, eigene Superglobale zu definieren; nur die von PHP vorgegebenen Variablennamen haben dieses besondere Verhalten.
Beispiele
Zugriff auf GET-Parameter und Serverinformationen
<?php
// URL: script.php?name=Welt
function greet(): string {
// Kein 'global $_GET' nötig – Superglobale sind direkt verfügbar
$name = isset($_GET['name']) ? htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8') : 'Gast';
return 'Hallo, ' . $name . '!';
}
echo greet(); // Hallo, Welt!
echo PHP_EOL;
echo 'Skript: ' . $_SERVER['SCRIPT_FILENAME'];
Sitzungsvariablen und POST-Daten verarbeiten
<?php
session_start();
// Simulierter POST-Login
$_POST['username'] = 'alice'; // In der Praxis kommt dieser Wert vom Formular
if (!empty($_POST['username'])) {
$username = filter_var($_POST['username'], FILTER_SANITIZE_SPECIAL_CHARS);
$_SESSION['user'] = $username;
echo 'Eingeloggt als: ' . htmlspecialchars($_SESSION['user'], ENT_QUOTES, 'UTF-8');
} else {
echo 'Kein Benutzername übermittelt.';
}
Globale Variablen über $GLOBALS referenzieren
<?php
$counter = 0;
function increment(): void {
// Zugriff auf die globale Variable ohne 'global $counter'
$GLOBALS['counter']++;
}
increment();
increment();
echo $counter; // 2
// Wichtig · Fallstricke
Sicherheit: Die Inhalte von $_GET, $_POST, $_COOKIE und $_REQUEST stammen direkt vom Client und sind nicht vertrauenswürdig. Vor der Ausgabe immer htmlspecialchars() verwenden (XSS-Schutz), vor Datenbankabfragen vorbereitete Statements nutzen (SQL-Injection-Schutz) und Eingaben mit filter_input() oder filter_var() validieren.
$_REQUEST sollte mit Vorsicht eingesetzt werden, da es Daten aus mehreren Quellen zusammenführt und die Herkunft eines Wertes unklar bleibt. Bevorzuge stattdessen explizit $_GET oder $_POST.
Die Direktive register_globals (in PHP 5.4 entfernt) extrahierte Superglobale als normale Variablen – diese Praxis gilt als hochgradig unsicher und ist heute nicht mehr verfügbar.