$_post: An array of variables passed by the HTTP POST method. is an automatic global variable.
$GLOBALS [' Http_raw_post_data ']: Always produce $HTTP_RAW_POST_DATA a variable containing the original POST data. This variable is only generated when it encounters data that does not recognize the MIME type. $HTTP _raw_post_data is not available for enctype= ' multipart/form-data ' form data.
That is to say, basically $globals[' http_raw_post_data ' is the same as $_post.
But if the POST data is not recognized by PHP, you can use $GLOBALS [' Http_raw_post_data '] to receive it, such as text/xml or soap, and so on.
Supplemental Note: The data type recognized by PHP by default is the application/x-www.form-urlencoded standard data type.
***********************************************************************************
It's written in the handbook.
Always produce a variable containing the original POST data. Otherwise, this variable is only generated when it encounters data that does not recognize the MIME type. However, a better way to access the raw POST data is php://input. $HTTP _raw_post_data is not available for enctype= ' multipart/form-data ' form data.
Question: $HTTP _raw_post_data = = $_post?
According to the manual, the answer should be no.
If not, what is the difference between them?
I know the answer, as follows:
The raw/uninterpreted HTTP POst information can be accessed with:
$GLOBALS [' Http_raw_post_data ']
This was useful in cases where the post content-type are not something PHP understands (such as Text/xml).
In other words, basically $globals[' http_raw_post_data ' and $_post are the same. But if the POST data is not recognized by PHP, you can use $GLOBALS [' Http_raw_post_data '] to receive it, such as text/xml or soap, and so on.
PHP default recognized data type is the application/x-www.form-urlencoded standard data type
With the Content-type=text/xml type, submit an XML document content to the PHP server, how to get this post data.
The raw/uninterpreted HTTP POST information can be accessed with: $GLOBALS [' http_raw_post_data '] this is useful in cases Where the post content-type is not something PHP understands (such as Text/xml).
Since PHP only recognizes the application/x-www.form-urlencoded standard data type by default, the contents of the type such as text/xml cannot be parsed into the $_post array, so the prototype is retained and given to $globals[' Http_raw_ Post_data '] to receive.
There is also a php://input that can be implemented with this function
Php://input allows the raw data to be read from the POST. Compared to $HTTP _raw_post_data, it brings less pressure to memory and does not require any special php.ini settings. Php://input cannot be used for enctype= "Multipart/form-data".
Application
A.htm
------------------
<form action= "post.php" method= "POST" >
<input type= "text" name= "user" >
<input type= "password" name= "password" >
<input type= "Submit" >
</form>
post.php
----------------------------
<? Echo file_get_contents ("Php://input");?>
Go: The difference between $GLOBALS [' Http_raw_post_data '] and $_post