在出現這種情況的時候需要檢查我們header頭中的引數
Content-Type:的值
php://input
可以讀取沒有處理過的POST資料。相較於$HTTP_RAW_POST_DATA
而言,它給記憶體帶來的壓力較小,並且不需要特殊的php.ini設
置。php://input
不能用於enctype=multipart/form-data
不過我通過程式碼對比總結,得出結果如下:
1.Coentent-Type
為application/x-www-data-urlencoded
和multipart/form-data
兩種情況下,PHP會將請求資料傳遞給$_POST
2.PHP不能識別的Content-Type
型別的時候,會將http請求包中相應的資料填入變數$HTTP_RAW_POST_DATA
.
3, 只要Content-Type
不為multipart/form-data
的時候,PHP將不會把http請求body體資料填入php://input
,否則其它情況都會。填入的長度,由Content-Length
指定。
4,只有Content-Type
為application/x-www-data-urlencoded
時,php://input
資料才跟$_POST
資料相一致。
5,php://input
與HTTPRAWPOSTDATA??.相同,但是php://input比??HTTP_RAW_POST_DATA
更效率,並不需要設定php.ini
6.http
請求的,GET
形式下,body
體為空。
解決辦法
修改php.ini
enable_post_data_reading = On always_populate_raw_post_data = On
重新啟動apache即可解決。
推薦:《PHP教學》
以上就是解決php無法接受post值的問題的詳細內容,更多請關注TW511.COM其它相關文章!