1. 程式人生 > >php中$_POST接收不到參數問題

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

總結 .org http請求 特殊 不能 長度 描述 tip 並且

問題描述: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://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中$_POST接收不到參數問題