1、$_POST["paramName"] 只有在Content-Type為application/x-www-form-urlencoded或者為multipart/form-data的 時候,PHP才會將http請求資料包中的body相應部分資料填入$_POST全域性變數中,其它情況PHP都忽略。填入到$_POST陣列中的資料是進行urldecode()解析的結果。
2、file_get_contents("php://input") 適用大多數型別的Content-type
php://input 允許讀取 POST 的原始資料。和 $HTTP_RAW_POST_DATA 比起來,它給記憶體帶來的壓力較小,並且不需要任何特殊的 php.ini 設定。php://input 不能用於 enctype="multipart/form-data"。
3、$GLOBALS["HTTP_RAW_POST_DATA"]; 總是產生 $HTTP_RAW_POST_DATA 變數包含有原始的 POST 資料。此變數僅在碰到未識別 MIME 型別的資料時產生。$HTTP_RAW_POST_DATA 對於 enctype="multipart/form-data" 表單資料不可用。
如果post過來的資料不是PHP能夠識別的,你可以用 $GLOBALS["HTTP_RAW_POST_DATA"]來接收,比如 text/xml 或者 soap 等等。需要設定php.ini中的always_populate_raw_post_data值為On,PHP才會總把POST資料填入變 量$http_raw_post_data。
看官方文件,在高版本里,這個變數$HTTP_RAW_POST_DATA被棄用了
This feature wasDEPRECATEDin PHP 5.6.0, andREMOVEDas of PHP 7.0.0. In general,php://inputshould be used instead of$HTTP_RAW_POST_DATA.
1、$_POST["paramName"] 只有在Content-Type為application/x-www-form-urlencoded或者為multipart/form-data的 時候,PHP才會將http請求資料包中的body相應部分資料填入$_POST全域性變數中,其它情況PHP都忽略。填入到$_POST陣列中的資料是進行urldecode()解析的結果。
2、file_get_contents("php://input") 適用大多數型別的Content-type
php://input 允許讀取 POST 的原始資料。和 $HTTP_RAW_POST_DATA 比起來,它給記憶體帶來的壓力較小,並且不需要任何特殊的 php.ini 設定。php://input 不能用於 enctype="multipart/form-data"。
3、$GLOBALS["HTTP_RAW_POST_DATA"]; 總是產生 $HTTP_RAW_POST_DATA 變數包含有原始的 POST 資料。此變數僅在碰到未識別 MIME 型別的資料時產生。$HTTP_RAW_POST_DATA 對於 enctype="multipart/form-data" 表單資料不可用。
如果post過來的資料不是PHP能夠識別的,你可以用 $GLOBALS["HTTP_RAW_POST_DATA"]來接收,比如 text/xml 或者 soap 等等。需要設定php.ini中的always_populate_raw_post_data值為On,PHP才會總把POST資料填入變 量$http_raw_post_data。
看官方文件,在高版本里,這個變數$HTTP_RAW_POST_DATA被棄用了
This feature wasDEPRECATEDin PHP 5.6.0, andREMOVEDas of PHP 7.0.0. In general,php://inputshould be used instead of$HTTP_RAW_POST_DATA.