Superglobals
PHP kann als web-native Programmiersprache bezeichnet werden. Die Programmiersprache wurde grundsätzlich mit dem Ziel der Web-Entwicklung geschaffen und hat dadurch einige built-in Konstrukte die hauptsächlich in der Web-Entwicklung nützlich sind.
PHP definiert einige globale Variablen (bezeichnet als Superglobals), welche wichtige Informationen zum HTTP-Request und zur Server Umgebung enthalten. Superglobals sind als assoziative Arrays angelegt. Superglobales sind nur sinnvoll zu verweden, wenn PHP am Web-Server ausgeführt wird. Für Kommandozeilen Programme sind Superglobales nutzlos. Folgende Superglobals sind definiert:
$_SERVER: wichtige Informationen zum aktuellen HTTP-Request und Serverkontext$_GET: Schlüssel/Wert Paare, welche URL Parameter enthalten$_POST: Schlüssel/Wert Paare, welche Daten aus dem HTTP-Body enthalten$_FILES: Falls Dateien an den Server gesendet werden, sind die temporären Pfade und Statusinformationen darüber dort enthalten$_COOKIE: Schlüssel/Wert Paare über Cookies, welche im HTTP-Request übertragen wurden$_SESSION: Schlüssel/Wert Paare zur aktuellen Session, welche am Server gespeichert ist (Referenziert über Session-Cookie)$_REQUEST: Zusammenfassung von$_GET,$_POST,$_COOKIE$_ENV: Umgebungsvariablen am Server
Beispiel: $_GET
Die Superglobal $_GET enthält alle Schlüssel/Wert Paare, welche als URL-Parameter (Querystring) an das PHP-Skript übergeben wurden.
Die Variable $name im Skript wird über den URL-Parameter name gesetzt. Wird kein URL-Parameter name angegeben, so erhält die Variable $name den Wert "Welt" (Null-Coalesing Operator).
<?php
$name = $_GET['name'] ?? "Welt";
?>
<!DOCTYPE html>
<html>
<head>
<title>Hallo <?php echo $name; ?></title>
</head>
<body>
<p>
Hallo <?php echo $name; ?>!
</p>
</body>
</html>
Wird das Skript über die URL http://localhost:9000 aufgerufen, sieht die Ausgabe ähnlich zum Screenshot unten aus:

Falls das Skript über die URL http://localhost:9000?name=Franzi aufgerufen wird, wird die Variable $name mit dem Wert "Franzi" belegt und die Ausgabe resultiert in Hallo Franzi. Dies entspricht dem unten angeführten Screenshot:

Beispiel: $_POST
Die Superglobal $_POST enthält alle Schlüssel/Wert Paare, welche im HTTP-Body an das PHP-Skript übergeben wurden.
Die Variable $name im Skript wird über ein Formularfeld gesetzt dieses hat das Attribute name mit dem Attributwert firstname gesetzt. Dadurch enthält der HTTP-Body beim Absenden des Formulars den Schlüssel firstname mit entsprechendem Wert (aus dem Formularfeld).
<?php
$name = $_POST['firstname'] ?? "";
?>
<!DOCTYPE html>
<html>
<head>
<title>Hallo <?php echo $name; ?></title>
</head>
<body>
<p>
<?php echo $name ? "Hallo $name!" : "Wen willst du grüßen?"; ?>
</p>
<form method="post">
<input name="firstname" value="<?php echo $name; ?>">
<button type="submit">Absenden</button>
</form>
</body>
</html>
Im Screenshot wird das Skript über den lokalen Web-Server aufgerufen mit der URL http://localhost:8080.

Bei Absenden des Formulars mit dem Wert Studenten wird das Schlüssel/Wert Paar firstname=Studenten als POST (HTTP-Request mit Methode POST) an den Web-Server gesendet. Die Verarbeitung am Web-Server führt dazu, dass die Variable $name mit dem Wert Studenten belegt wird und an unterschiedlichen Stellen zur entsprechenden Ausgabe führt:
