Heim > Artikel > Backend-Entwicklung > Detaillierte grafische Erklärung des Unterschieds zwischen $GLOBALS['HTTP_RAW_POST_DATA'] und $_POST in PHP
Dieser Artikel stellt hauptsächlich den Unterschied zwischen $GLOBALS['HTTP_RAW_POST_DATA'] und $_POST in PHP vor. Er analysiert die Funktionen und Verwendung von $GLOBALS['HTTP_RAW_POST_DATA'] anhand spezifischer Beispiele Weitere Informationen finden Sie unter
:
$_POST
: Ein Array bestehend aus Variablen, die über die HTTP-POST-Methode übergeben werden. ist eine automatische globale Variable. $GLOBALS['HTTP_RAW_POST_DATA']
: Generieren Sie immer die Variable $HTTP_RAW_POST_DATA, die die POST-Rohdaten enthält. Diese Variable wird nur generiert, wenn Daten eines nicht erkannten MIME-Typs gefunden werden. $HTTP_RAW_POST_DATA ist für enctype="multipart/form-data"-Formulardaten nicht verfügbar.
Das heißt, im Grunde sind $GLOBALS['HTTP_RAW_POST_DATA'] und $_POST gleich.
Aber wenn die geposteten Daten von PHP nicht erkannt werden, können Sie $GLOBALS['HTTP_RAW_POST_DATA'] verwenden, um sie zu empfangen, z. B. Text/XML oder Soap usw.
Zusätzliche Erklärung: Der von PHP standardmäßig erkannte Datentyp ist der Standarddatentyp application/x-www.form-urlencoded.
Das steht im Handbuch:
Generieren Sie immer Variablen, die die ursprünglichen POST-Daten enthalten. Andernfalls wird diese Variable nur generiert, wenn Daten eines nicht erkannten MIME-Typs gefunden werden. Eine bessere Möglichkeit, auf die POST-Rohdaten zuzugreifen, ist jedoch php://input. $HTTP_RAW_POST_DATA ist für enctype="multipart/form-data"-Formulardaten nicht verfügbar.
Frage: Ist $HTTP_RAW_POST_DATA == $_POST?
Laut Handbuch sollte die Antwort Nein lauten.
Wenn sie unterschiedlich sind, was ist ihr Unterschied?
Ich kenne die Antwort wie folgt:
Auf die RAW-/uninterpretierten HTTP-POst-Informationen kann zugegriffen werden mit:
$GLOBALS['HTTP_RAW_POST_DATA']
Das ist nützlich in Fällen, in denen der Inhaltstyp des Beitrags nicht etwas ist, das PHP versteht (z. B. text/xml).
Das heißt, im Grunde sind $GLOBALS['HTTP_RAW_POST_DATA'] und $_POST gleich. AberWenn die geposteten Daten von PHP nicht erkannt werden, können Sie $GLOBALS['HTTP_RAW_POST_DATA'] verwenden, um sie zu empfangen, z. B. Text/XML oder Soap usw..
Der von PHP standardmäßig erkannte Datentyp ist der Standarddatentyp application/x-www.form-urlencoded.
Verwenden Sie den Typ Content-Type=text/xml, um den Inhalt einer XML-Datei zu übermitteln Dokument auf den PHP-Server übertragen, wie man diese POST-Daten erhält.
Auf die RAW-/uninterpretierten HTTP-POST-Informationen kann zugegriffen werden mit: $GLOBALS['HTTP_RAW_POST_DATA'] Dies ist in Fällen nützlich, in denen der Inhaltstyp des Beitrags nicht etwas ist, das PHP versteht (z. B. text/xml). ).
Da PHP standardmäßig nur application/x-www.form-urlencoded-Standarddatentypen erkennt, können Inhalte wie text/xml nicht in ein $_POST-Array geparst werden, sodass der Prototyp beibehalten wird , übergeben Sie es zum Empfang an $GLOBALS['HTTP_RAW_POST_DATA'].
Es gibt auch php://input, das diese Funktion ebenfalls implementieren kann
php://input ermöglicht das Lesen der Originaldaten von POST. Es belastet den Speicher weniger als $HTTP_RAW_POST_DATA und erfordert keine speziellen php.ini-Einstellungen. php://input kann nicht mit enctype="multipart/form-data" verwendet werden.
Anwendung:
a.htm:
<form action="post.php" method="post"> <input type="text" name="user"> <input type="password" name="password"> <input type="submit"> </form>
post.php:
<? echo file_get_contents("php://input"); ?>
Tomcat-Konfigurations-PHP kann $_post, $_get nicht verwenden
Der Unterschied zwischen $_GET und $_POST in PHP
Über $_POST in PHP-Beispiele für
Das obige ist der detaillierte Inhalt vonDetaillierte grafische Erklärung des Unterschieds zwischen $GLOBALS['HTTP_RAW_POST_DATA'] und $_POST in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!