php中$_POST接收不到參數問題


問題描述:PHP可以接收_GET、_SERVER、_COOKIE等參數,php://input可以讀取沒有處理過的POST數據,獨獨_POST接收不到post參數。

 原因:

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://inputHTTPRAWPOSTDATA.php://inputHTTP_RAW_POST_DATA更效率,並不需要配置php.ini
6.http請求的,GET形式下,body體為空。

 解決方法:

修改php.ini

enable_post_data_reading = On

always_populate_raw_post_data = On

重啟apache即可解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM