2016-04-15 3 views
0

Für die Erhaltungs-Anforderung verwenden wir den Abfrage-String in String umwandeln kann unter Verwendung

parse_str($_SERVER['QUERY_STRING']); 

Aber für die post-Methode obige Verfahren nicht funktionieren. Gibt es eine andere Methode, die die Post-Abfrage auf die Zeichenkette macht.

+2

POST-Daten befinden sich in '$ _POST'. – paskl

+1

'json_encode ($ _ REQUEST)' erhalten Sie Json serialisierte Get, Post und Cookie-Parameter. –

+0

@vp_arth http://stackoverflow.com/a/2143042/208809 – Gordon

Antwort

1

Sofern Sie PHP nicht über die Befehlszeile ausführen, füllt PHP die Werte superglobal arrays$_GET und $_POST (neben anderen) mit den analysierten Abfragewerten und den entsprechenden Post-Body-Werten auf. Es wird das automatisch tun, also gibt es keinen Grund, warum Sie parse_str auf den Query-String wie Sie zeigen würden.

den PHP Manual for $_POST

Einen Zitiert assoziativen Array von Variablen für das aktuelle Skript über die HTTP-POST-Methode übergeben, wenn application/x-www-form-urlencoded oder multipart/form-data als HTTP-Content-Type in der Anforderung verwendet wird.

Dies ist die bevorzugte Methode für den Zugriff auf POST-Daten. Sie können jedoch auch auf den rohen Post-Body zugreifen, via the php://input stream or $HTTP_RAW_POST_DATA (Letzteres ist in PHP 5.6.0 veraltet und REMOVED ab PHP 7.0.0).

Zitiert die PHP Manual on input streams:

php://input ist ein Read-Only-Stream, mit dem Sie Rohdaten von der Anforderungstext zu lesen. Im Fall von POST-Anfragen ist es vorzuziehen, php://input anstelle von $HTTP_RAW_POST_DATA zu verwenden, da es nicht von speziellen php.ini-Anweisungen abhängt. In den Fällen, in denen $HTTP_RAW_POST_DATA nicht standardmäßig ausgefüllt ist, ist dies eine potenziell weniger speicherintensive Alternative zur Aktivierung von always_populate_raw_post_data. php://input ist nicht verfügbar mit enctype="multipart/form-data".