W3docs

PHP Superglobals verstehen: Die Variable $_REQUEST

Die Variable $_REQUEST in PHP kombiniert $_GET, $_POST und $_COOKIE zu einem einzigen Array und ermöglicht einfachen Zugriff auf Client-Daten.

Die PHP-Sprache verfügt über viele eingebaute Variablen, sogenannte Superglobals, die eine praktische Möglichkeit bieten, in Ihren Skripten auf Daten aus verschiedenen Quellen zuzugreifen. Eine der am häufigsten verwendeten Superglobals ist die Variable $_REQUEST, die die Werte der Variablen $_GET, $_POST und $_COOKIE in einem einzigen Array zusammenführt.

In diesem Artikel werden wir die Variable $_REQUEST genauer untersuchen und ihre Eigenschaften, Anwendungsfälle sowie bewährte Vorgehensweisen für die Arbeit damit in Ihren PHP-Skripten erkunden.

Was ist die Variable $_REQUEST?

Die Variable $_REQUEST ist eine PHP-Superglobal — ein assoziatives Array, das automatisch in jedem Gültigkeitsbereich Ihres Skripts verfügbar ist. Sie enthält Daten, die über verschiedene Wege an den Server übermittelt wurden, beispielsweise über GET- und POST-Anfragen oder Cookies. Sie fasst die Daten aus den Variablen $_GET, $_POST und $_COOKIE in einem einzigen Array zusammen.

Die Reihenfolge, in der diese Quellen zusammengeführt werden, wird durch die Direktiven request_order und variables_order in der php.ini gesteuert. Das ist wichtig, weil bei gleichem Schlüssel in mehreren Quellen die zuletzt in request_order aufgeführte Quelle gewinnt. Die Standardeinstellung bei den meisten modernen Installationen ist GP (GET, dann POST), was bedeutet, dass POST-Werte GET-Werte mit demselben Namen überschreiben und Cookies gar nicht enthalten sind:

; php.ini
request_order = "GP"   ; only $_GET and $_POST feed $_REQUEST

Da dieses Verhalten von der Serverkonfiguration abhängt, sollten Sie nie davon ausgehen, dass $_REQUEST Cookie-Daten enthält, ohne die Einstellung request_order überprüft zu haben.

Wann sollte die Variable $_REQUEST verwendet werden?

Die Variable $_REQUEST ist nützlich, wenn Sie auf vom Client übermittelte Daten zugreifen möchten, unabhängig von der verwendeten Methode. Wenn Sie beispielsweise ein vom Benutzer übermitteltes Formular verarbeiten möchten, können Sie mit der Variable $_REQUEST auf die im Formular übertragenen Werte zugreifen, ohne wissen zu müssen, ob das Formular per GET- oder POST-Methode abgeschickt wurde.

Obwohl $_REQUEST Cookie-Daten enthalten kann, ist es gängige Praxis, Cookies für mehr Klarheit und Sicherheit direkt über $_COOKIE abzurufen.

Wie greift man auf Daten in der Variable $_REQUEST zu?

Um auf die Daten in der Variable $_REQUEST zuzugreifen, verwenden Sie einfach die Array-Notation und geben den Schlüssel an, der dem gewünschten Wert entspricht. Wenn Sie beispielsweise ein Formular mit einem Textfeld namens „username" haben, können Sie den in diesem Feld übermittelten Wert wie folgt abrufen:

Einfaches Beispiel zum Lesen eines Werts

$username = $_REQUEST['username'];
// Always validate and sanitize input before use

Da ein Schlüssel möglicherweise fehlt (zum Beispiel beim ersten Seitenaufruf, bevor ein Formular abgeschickt wurde), sollten Sie zunächst prüfen, ob er vorhanden ist. Der Null-Koaleszenz-Operator (??) ist die sauberste Methode, um einen Standardwert anzugeben:

$username = $_REQUEST['username'] ?? 'guest';
echo "Hello, " . htmlspecialchars($username);

Wenn Sie die Existenzprüfung vergessen und der Schlüssel fehlt, gibt PHP eine Warnung Undefined array key aus — sichern Sie daher immer Ihre Lesezugriffe ab.

Ein vollständiges Formularbeispiel

Der eigentliche Vorteil von $_REQUEST besteht darin, dass derselbe Handler funktioniert, unabhängig davon, ob das Formular method="get" oder method="post" verwendet. Das folgende Beispiel rendert ein Formular und verarbeitet seine Eingabe unabhängig von der Methode:

<?php
// handler.php
if (isset($_REQUEST['name'])) {
    // Never trust raw input — escape it before output
    $name = htmlspecialchars(trim($_REQUEST['name']));
    echo "Welcome, {$name}!";
}
?>

<form method="post" action="handler.php">
    <input type="text" name="name" placeholder="Your name">
    <button type="submit">Submit</button>
</form>

Ändern Sie method="post" in method="get" — der PHP-Code bleibt unverändert. Genau darin liegt der Komfort, den $_REQUEST bietet.

$_REQUEST vs. $_GET vs. $_POST

SuperglobalDatenquelleVerwenden wenn
$_GETURL-Abfragezeichenfolge (?key=value)Daten kommen über die URL an (Links, Suche).
$_POSTHTTP-Anfrage-BodySie verarbeiten Formularübermittlungen, Uploads oder zustandsändernde Aktionen.
$_REQUEST$_GET + $_POST (+ $_COOKIE, je nach Konfiguration)Die Methode ist tatsächlich unbekannt und Sie müssen beide akzeptieren.

Weitere Informationen zu den dedizierten Arrays finden Sie in den Kapiteln $_GET und $_POST sowie in PHP-Formularverarbeitung für vollständige Beispiele.

Bewährte Vorgehensweisen für die Arbeit mit der Variable $_REQUEST

Bei der Arbeit mit der Variable $_REQUEST ist es wichtig, einige bewährte Vorgehensweisen zu befolgen, um sicherzustellen, dass Ihre Skripte sicher und zuverlässig sind. Zu den empfohlenen Vorgehensweisen gehören:

  • Validieren und bereinigen Sie alle vom Client empfangenen Daten, um sicherzustellen, dass diese in Ihren Skripten sicher verwendet werden können.
  • Bevorzugen Sie spezifische Superglobals wie $_GET oder $_POST, wenn die Anfragemethode bekannt ist, da $_REQUEST im modernen PHP aufgrund potenzieller Parameterverschmutzung und Mehrdeutigkeit generell nicht empfohlen wird.
  • Vermeiden Sie die Verwendung der Variable $_REQUEST beim Umgang mit sensiblen Daten wie Passwörtern oder anderen vertraulichen Informationen, um Sicherheitsrisiken zu verhindern.
  • Verwenden Sie PHPs Filterfunktionen (z. B. filter_input() oder filter_var()), um Eingaben strukturiert und wiederverwendbar zu validieren und zu bereinigen.
  • Lesen Sie Cookies direkt über $_COOKIE und verwenden Sie für Session-Daten $_SESSION — keines davon gehört in anfragenverschmutzungsanfällige Code-Pfade.

Fazit

Die Variable $_REQUEST bietet eine einheitliche Möglichkeit, auf Client-Daten zuzugreifen, unabhängig von der Übermittlungsmethode. Wenn Sie ihre Konfigurationsabhängigkeiten, potenzielle Mehrdeutigkeiten und bewährte Sicherheitspraktiken verstehen, können Sie sie effektiv in Ihren PHP-Skripten einsetzen. Während die moderne Entwicklung oft explizite $_GET- oder $_POST-Verwendung bevorzugt, bleibt $_REQUEST ein nützliches Werkzeug für die Verarbeitung gemischter Eingabequellen bei korrekter Konfiguration.

Übungen

Übung
Welche globalen Arrays stellt PHP zur Verfügung, um mit Daten umzugehen, die über HTTP-Anfragen übermittelt werden?
Welche globalen Arrays stellt PHP zur Verfügung, um mit Daten umzugehen, die über HTTP-Anfragen übermittelt werden?
Was this page helpful?