Heim  >  Artikel  >  Backend-Entwicklung  >  PHP ruft POST-JSON-Daten ab

PHP ruft POST-JSON-Daten ab

巴扎黑
巴扎黑Original
2016-11-24 13:39:091667Durchsuche

Wenn Sie Daten über Ajax an das PHP-Programm übergeben, werden Sie feststellen, dass Sie die Daten nicht mit $_POST abrufen können. Sie können jedoch in Firebug sehen, dass der Beitrag tatsächlich JSON-Daten enthält mit print_r( file_get_contents("php://input")) Danach können Sie die JSON-Daten abrufen

Was ist also php://input?

An php:/ Zur Einführung von /input gibt es im offiziellen PHP-Handbuch einen Absatz, der es klar umreißt.

   php://input ermöglicht das Lesen von POST-Rohdaten. Es ist eine weniger speicherintensive Alternative zu $HTTP_RAW_POST_DATA und erfordert keine speziellen php.ini-Anweisungen. php://input ist mit enctype nicht verfügbar ="multipart/form-data".

Übersetzt lautet das:

„php://input kann unverarbeitete POST-Daten lesen. Im Vergleich zu $HTTP_RAW_POST_DATA belastet es den Speicher weniger und erfordert keine speziellen php.ini-Einstellungen. php://input kann nicht für enctype=multipart/form-data verwendet werden.

 1. Wenn der Content-Type-Wert application/x-www-form-urlencoded ist, fordert PHP die entsprechenden Daten von an Der http-Anforderungstext wird in das Array $_POST eingefüllt, und die in das Array $_POST eingefüllten Daten sind das Ergebnis der Analyse von urldecode() (tatsächlich gibt es zusätzlich zum Inhaltstyp auch Multipart/Formular). Daten, die darauf hinweisen, dass es sich bei den Daten um Formulardaten handelt, führen wir später ein)

2. php://Eingabedaten, solange der Inhaltstyp nicht multipart/form-data ist (diese Bedingung wird später eingeführt). ), dann php: //Eingabedaten und http-Entitätskörper. Die Länge dieses Teils der konsistenten Daten wird durch Content-Length 3 angegeben. Nur wenn Content-Type application/x-www ist -form-urlencoded und die Übermittlungsmethode ist die POST-Methode, $_POST-Daten und php://input-Daten sind „konsistent“ (die Anführungszeichen zeigen an, dass ihre Formate inkonsistent und ihr Inhalt konsistent sind). > 4. php://input. Das liegt daran, dass die $_GET-Daten in das PATH-Feld des http-Anfrage-Headers geschrieben werden und nicht in den Hauptteil der http-Anfrage 🎜>
Ich glaube, Sie haben bereits ein tiefes Verständnis für php://input. Was ist also $http_raw_post_data? Eine integrierte globale Variable in PHP. Sie wird verwendet, wenn PHP den Inhaltstyp nicht erkennen kann. Die POST-Daten werden so wie sie sind in die Variable $http_raw_post_data gefüllt. Außerdem können die POST-Daten nicht mit Content-Type multipart/form-data gelesen werden. Sie müssen den Wert „always_populate_raw_post_data“ in php.ini auf „On“ setzen, damit PHP immer gefüllt wird Geben Sie in den POST-Daten die Variable $http_raw_post_data ein. Hinweis 1. PHP fordert Daten nur von http an, wenn der Wert von Coentent-Type application/x-www-data-urlencoded und multipart/form- ist. Daten im Paket werden in die globale Variable $_POST

gefüllt. 2. Wenn PHP den Content-Type-Typ nicht erkennt, werden die entsprechenden Daten im http-Anforderungspaket in die Variable $ gefüllt HTTP_RAW_POST_DATA

3. Nur wenn Coentent-Type nicht multipart/form-data ist, füllt PHP die entsprechenden Daten im http-Anforderungspaket nicht in php://input ein, andernfalls ist es dasselbe in anderen Situationen. Die Länge der Auffüllung, angegeben durch Coentent-Length.

4. Nur wenn der Inhaltstyp application/x-www-data-urlencoded ist, stimmen die php://-Eingabedaten mit den $_POST-Daten überein.

5. php://input data ist immer dasselbe wie $HTTP_RAW_POST_DATA, aber php://input ist effizienter als $HTTP_RAW_POST_DATA und erfordert keine besonderen Einstellungen für php.ini


6. PHP füllt den query_path-Teil des PATH-Felds in die globale Variable $_GET ein. Normalerweise ist der Hauptteil einer von der GET-Methode übermittelten http-Anfrage leer.



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
Vorheriger Artikel:php __call und __callStaticNächster Artikel:php __call und __callStatic