編寫項目時需要將數據轉換成json格式的字符串,並通過post傳參傳給后台,但在后台接收數據時發現$_POST參數為空
頭部為:
curl_setopt($ci, CURLOPT_HEADER, 0); curl_setopt($ci, CURLOPT_HTTPHEADER,array('Content-Type: application/json; charset=utf-8','Content-Length:' . strlen($tmpdatastr)));
針對這個問題在網上查詢資料發現,僅在 Coentent-Type的值為application/x-www-data-urlencode和multipart/form-data時,php才會將http請求數據包中的數據填進$_POST中,
其他類型的Coentent-Type,php不能自動識別,會將相應的數據填入變量$HTTP_RAW_POST_DATA中.
所以可以使用兩種方法在這種情況下獲取數據
1.通過$HTTP_RAW_POST_DATA獲取
$post_data = $GLOBALS['HTTP_RAW_POST_DATA'];
但需要修改相應的php.ini指令
2.通過php://input獲取(建議使用這種方法 php://input數據總是和$HTTP_RAW_POST_DATA相同,但php://input更湊效且不需要修改php.ini)
$post_data = file_get_contents("php://input");
By Hgq