2016-10-25 144 views
0

我收到數據後這樣從數據流中獲取數據後如何恢復數據?

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

我想放回流的數據,所以我修改方法如下上述方法

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

的instaed但它無法正常工作。任何人都可以告訴我做錯了嗎? 這個案例需要在wordpress插件開發中。如果一個插件讀取發佈數據,其他插件無法獲取該數據。
謝謝

回答

0

documentation,php://input中所述,只能讀取一次,不支持查找操作。

多次「讀取」輸入流的唯一方法是將其副本傳遞到您的程序中。

+0

這種情況需要在WordPress插件的研究與開發。如果一個插件讀取發佈數據,其他插件無法獲取該數據。我們無法通過該副本。 – rajkuppus

+0

在這種情況下,您將無法使用'''php:// input'''。我沒有使用wordpress的經驗,但我確定它必須允許您以某種方式訪問​​原始請求數據,所以我會查看它。如果沒有,你總是可以在github上提出問題。 –

0

PHP輸入流包含請求正文,只有請求包含正文時,您的示例纔會有效。

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

對於校驗添加到代碼:

echo fgets($stream); 

PHP://輸入不可用ENCTYPE = 「多部分/格式數據」。

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