Superglobals

Geschätzte Lektüre: 8 Minuten 371 Ansichten

Was sind Superglobals in PHP?

Superglobals sind spezielle vordefinierte Variablen in PHP, die in allen Bereichen eines Skripts verfügbar sind – egal ob innerhalb oder außerhalb von Funktionen, Klassen oder Methoden. Sie werden von PHP automatisch erstellt und enthalten Informationen über Server, Client, Benutzereingaben und mehr.

Metapher: Stellen Sie sich Superglobals wie ein universelles Kontrollpanel vor, das Ihnen in jedem Raum Ihres Hauses (also an jeder Stelle des PHP-Codes) Zugriff auf wichtige Systeminformationen gibt – ähnlich wie ein Smart Home System, das überall verfügbar ist.

Die wichtigsten Superglobals im Überblick

Hier sind die wichtigsten Superglobals, die wir im Detail betrachten werden:

  1. $_GET – Daten aus URL-Parametern
  2. $_POST – Daten aus Formular-Übermittlungen
  3. $_REQUEST – Kombination aus GET, POST und COOKIE
  4. $_SERVER – Server- und Umgebungsinformationen
  5. $_SESSION – Sitzungsdaten
  6. $_COOKIE – Client-seitige Cookies
  7. $_FILES – Hochgeladene Dateien
  8. $_ENV – Umgebungsvariablen

1. $_GET – Daten aus der URL

$_GET enthält Daten, die über die URL als Parameter übergeben werden.
Beispiel-URL: http://example.com?name=Max&age=30

// Zugriff auf die GET-Parameter
echo "Hallo, " . $_GET['name']; // Ausgabe: Hallo, Max
echo "Du bist " . $_GET['age'] . " Jahre alt."; // Ausgabe: Du bist 30 Jahre alt.

Anwendungsfall: Suchfunktionen, Filter auf Produktseiten, paginierte Listen.
Sicherheitshinweis: Immer Daten aus $_GET validieren und bereinigen, da sie leicht manipuliert werden können.

$_POST – Formulardaten

$_POST enthält Daten, die über ein HTML-Formular mit der POST-Methode übermittelt wurden.

Beispiel-Formular:

<form method="post" action="process.php">
  <input type="text" name="username">
  <input type="password" name="password">
  <button type="submit">Absenden</button>
</form>

process.php:

$username = $_POST['username'];
$password = $_POST['password'];
// Verarbeite die Daten...

Verbildlichung: $_POST ist wie ein Briefkasten – das Formular wirft Daten hinein, und Sie holen sie mit $_POST wieder heraus.

$_REQUEST – Kombinierte Eingabedaten

$_REQUEST ist eine Kombination aus Daten aus $_GET, $_POST und $_COOKIE. Die Reihenfolge hängt von der PHP-Konfiguration ab.

// Funktioniert für GET und POST
$value = $_REQUEST['param_name'];

Warnung: Die Verwendung von $_REQUEST wird oft als unsauber betrachtet, da nicht klar ist, woher die Daten kommen. Besser ist es, explizit $_GET oder $_POST zu verwenden.

$_SERVER – Serverinformationen

$_SERVER enthält Informationen über den Server und die Ausführungsumgebung.

Wichtige Elemente:

echo $_SERVER['PHP_SELF']; // Das aktuelle Skript
echo $_SERVER['SERVER_NAME']; // Server name (z.B. example.com)
echo $_SERVER['HTTP_USER_AGENT']; // Browser des Benutzers
echo $_SERVER['REMOTE_ADDR']; // IP-Adresse des Benutzers
echo $_SERVER['REQUEST_METHOD']; // GET oder POST
echo $_SERVER['QUERY_STRING']; // Der Teil der URL nach dem ?

Anwendungsfall:

// Umleitungen basierend auf dem aktuellen Pfad
if ($_SERVER['REQUEST_URI'] === '/admin') {
    header('Location: /login.php');
    exit;
}

Verbildlichung: $_SERVER ist wie der Personalausweis des Servers – er enthält alle wichtigen Identifikationsdaten.

$_SESSION – Sitzungsdaten

$_SESSION ermöglicht das Speichern von benutzerspezifischen Daten über mehrere Seitenaufrufe hinweg.

Beispiel:

// Session starten
session_start();

// Wert setzen
$_SESSION['username'] = 'MaxMustermann';

// Wert auslesen (auf einer anderen Seite)
session_start();
echo "Hallo, " . $_SESSION['username']; // Ausgabe: Hallo, MaxMustermann

Anwendungsfall: Benutzer-Logins, Warenkörbe, mehrstufige Formulare.
Wichtig: session_start() muss auf jeder Seite, die Sessions verwendet, am Anfang des Skripts aufgerufen werden.

$_COOKIE – Client-seitige Daten

$_COOKIE enthält Daten, die als Cookies im Browser des Benutzers gespeichert sind.

Cookie setzen:

setcookie('benutzereinstellung', 'darkmode', time() + 86400); // Gültig für 1 Tag

Cookie auslesen:

if (isset($_COOKIE['benutzereinstellung'])) {
    echo "Benutzereinstellung: " . $_COOKIE['benutzereinstellung'];
}

Verbildlichung: Cookies sind wie Notizzettel, die Sie dem Browser geben und die er Ihnen bei jedem Besuch wieder zeigt.

$_FILES – Hochgeladene Dateien

$_FILES enthält Informationen über hochgeladene Dateien.

Beispiel-Formular:

<form method="post" enctype="multipart/form-data">
  <input type="file" name="benutzerbild">
  <button type="submit">Hochladen</button>
</form>

Datei verarbeiten:

if ($_FILES['benutzerbild']['error'] === UPLOAD_ERR_OK) {
    $tmp_name = $_FILES['benutzerbild']['tmp_name'];
    $name = basename($_FILES['benutzerbild']['name']);
    move_uploaded_file($tmp_name, "uploads/$name");
    echo "Datei erfolgreich hochgeladen!";
}

$_ENV – Umgebungsvariablen

$_ENV enthält Umgebungsvariablen, die typischerweise in der Serverkonfiguration gesetzt werden.

Beispiel (in .env Datei):

DB_HOST=localhost
DB_USER=root
DB_PASS=secret

Zugriff:

$db_host = $_ENV['DB_HOST'];
$db_user = $_ENV['DB_USER'];
$db_pass = $_ENV['DB_PASS'];

Sicherheitsbest Practices

Validierung: Immer Eingaben validieren

$email = filter_input(INPUT_GET, 'email', FILTER_VALIDATE_EMAIL);
if ($email === false) {
    die('Ungültige E-Mail-Adresse');
}

Bereinigung: Daten bereinigen vor der Verwendung

$clean_input = htmlspecialchars($_GET['input']);

Vorbereitete Statements: Für Datenbanken

$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ?');
$stmt->execute([$_POST['email']]);

Zusammenfassungstabelle

SuperglobalBeschreibungTypische Verwendung
$_GETURL-ParameterSuchanfragen, Filter
$_POSTFormulardatenLogin-Formulare, Kontaktformulare
$_REQUESTKombiniert GET, POST, COOKIE(Selten empfohlen)
$_SERVERServerinformationenUmleitungen, Protokollierung
$_SESSIONPersistente BenutzerdatenLogins, Warenkörbe
$_COOKIEClient-seitige DatenBenutzereinstellungen, Tracking
$_FILESHochgeladene DateienProfilbilder, Dokumente
$_ENVUmgebungsvariablenDatenbank-Zugangsdaten
Dieses Dokument teilen

Superglobals

Oder Link kopieren

INHALT

Abonnieren

×
Cancel