2016-10-25 3 views
0

erhalte ich Post-Daten wie dieseWie legen Sie die Daten zurück, nachdem sie aus dem Stream abgerufen wurden?

$data = file_get_contents('php://input'); 

ich die Daten wieder in den Strom setzen wollen, so modifizierte ich die Methode folgende instaed von oben Methode

$stream = fopen('php://temp', 'w+'); 
stream_copy_to_stream(fopen('php://input', 'r'), $stream); 
rewind($stream); 

Aber es funktioniert nicht. Kann jemand erzählen, wo ich falsch gemacht habe? Dieser Fall ist in WordPress-Plugin-Entwicklung benötigt. Wenn ein Plugin die Post-Daten liest, kann ein anderes Plugin diese Daten nicht bekommen.
Dank

Antwort

0

Wie in der documentation erwähnt, kann php://input nur einmal gelesen werden und bietet keine Unterstützung für Operationen suchen.

Die einzige Möglichkeit, den Eingabestream mehrmals zu lesen, besteht darin, die Kopie in Ihrem Programm zu übergeben.

+0

Dieser Fall ist in Wordpress-Plugin Entwicklung benötigen. Wenn ein Plugin die Post-Daten liest, kann ein anderes Plugin diese Daten nicht bekommen. Wir können die Kopie nicht weitergeben. – rajkuppus

+0

In diesem Fall können Sie '' 'php: // input''' nicht verwenden. Ich habe keine Erfahrung mit WordPress, aber ich bin sicher, dass es Ihnen erlauben muss, auf die rohen Anfragedaten in irgendeiner Weise zuzugreifen, also würde ich das nachschlagen. Wenn dies nicht der Fall ist, können Sie immer ein Problem auf GitHub ablegen. –

0

PHP-Eingabestream enthält Anfragekörper und Ihr Beispiel funktioniert nur, wenn Anfrage Körper enthält.

curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d 'sample body' "YOUR_ADDRESS" 

Für die Prüfung in dem Code:

echo fgets($stream); 

php: // input mit enctype = "multipart/form-data" nicht zur Verfügung.

http://php.net/manual/en/wrappers.php.php

Verwandte Themen