Method 1, $_POST
$_POST or $_REQUEST stores the data formatted by PHP in the form of key=>value.
Method 2, use file_get_contents(“php://input”)
For POST data without specified Content-Type, you can use file_get_contents(“php://input”); to obtain the original data. In fact, any data received by POST using PHP uses this method. Regardless of Content-Type, including binary file streams is also feasible. Compared to $HTTP_RAW_POST_DATA, it puts less pressure on memory and does not require any special php.ini settings. php://input cannot read POST data whose Content-Type is multipart/form-data. You need to set the always_populate_raw_post_data value in php.ini to On. php://input cannot read $_GET data. It is because the $_GET data is written as query_path in the PATH field of the http request header (header), rather than in the body part of the http request.
Method three, use global variables$GLOBALS[‘HTTP_RAW_POST_DATA’]
Stored in $GLOBALS[‘HTTP_RAW_POST_DATA’] is the original data from POST. But whether $GLOBALS['HTTP_RAW_POST_DATA'] saves the POST data depends on the centent-Type setting. Only when PHP cannot recognize the Content-Type, the POST data will be filled in as it is. Enter the variable $GLOBALS['HTTP_RAW_POST_DATA']. For example, when Content-Type=application/x-www-form-urlencoded, the variable is empty. In addition, it is also unable to read POST data whose Content-Type is multipart/form-data. You also need to set the always_populate_raw_post_data value in php.ini to On so that PHP will always fill in the POST data into the variable $http_raw_post_data.
|