Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte grafische Erklärung des Unterschieds zwischen $GLOBALS['HTTP_RAW_POST_DATA'] und $_POST in PHP

Detaillierte grafische Erklärung des Unterschieds zwischen $GLOBALS['HTTP_RAW_POST_DATA'] und $_POST in PHP

墨辰丷
墨辰丷Original
2018-05-21 09:50:542140Durchsuche

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"); ?>

Verwandte Empfehlungen:

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn