Home > php教程 > PHP开发 > Summary of several methods for obtaining POST data with PHP

Summary of several methods for obtaining POST data with PHP

高洛峰
Release: 2016-12-23 15:56:01
Original
1451 people have browsed it

1. Several methods for PHP to obtain POST data

Method 1. The most common method is: $_POST['fieldname'];

Note: Only Content-Type: application/x-www-form- The data submitted by urlencoded
Explanation: It is the data from the form POST

Method 2, file_get_contents("php://input");

Explanation:
Allows reading the original data of POST.
Compared with $HTTP_RAW_POST_DATA, it puts less pressure on memory and does not require any special php.ini settings.
php://input cannot be used with enctype="multipart/form-data".
Explanation:
For POST data without specified Content-Type, you can use file_get_contents("php://input"); to obtain the original data.
In fact, this method can be used to receive any POST data using PHP. Regardless of Content-Type, including binary file streams is also acceptable.
So method 2 is the safest method

Method 3, $GLOBALS['HTTP_RAW_POST_DATA'];

Note:
Always generate $HTTP_RAW_POST_DATA variable containing the original POST data.
This variable is only generated when data of unrecognized MIME type is encountered.
$HTTP_RAW_POST_DATA is not available for enctype="multipart/form-data" form data
If the posted data is not recognized by PHP, you can use $GLOBALS['HTTP_RAW_POST_DATA'] to receive it,
such as text/xml or soap, etc.
Explanation:
$GLOBALS['HTTP_RAW_POST_DATA'] stores the original data from POST.
$_POST or $_REQUEST stores data formatted by PHP in the form of key=>value.
But whether the POST data is saved in $GLOBALS['HTTP_RAW_POST_DATA'] depends on the centent-Type setting, that is, when POSTing data, Content-Type must be explicitly specified: application/x-www-form-urlencoded, POST data will be stored in $GLOBALS['HTTP_RAW_POST_DATA']

2. Demonstration

1. How does PHP obtain the XML data from POST and parse the XML data

For example, when we develop WeChat enterprise accounts, how to handle user replies What about the data?
Document: http://qydev.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E6%94%B6%E6%99%AE%E9%80%9A%E6% B6%88%E6%81%AF
First check the documentation and you will know: After enabling the development mode, when the user replies to the application, the WeChat server will POST a string of XML data to the verified callback URL

Assume this URL For http://www.xxx.com
Http request method: POST
http://www.xxx.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS×tamp=13500001234&nonce=123412323

The XML content of POST is:

<xml>
   <ToUserName><![CDATA[toUser]]></ToUserName>
   <FromUserName><![CDATA[fromUser]]></FromUserName> 
   <CreateTime>1348831860</CreateTime>
   <MsgType><![CDATA[text]]></MsgType>
   <Content><![CDATA[this is a test]]></Content>
   <MsgId>1234567890123456</MsgId>
   <AgentID>1</AgentID>
</xml>
Copy after login

So what? Accept this content eh?
You can use it at this time: Method 2 (file_get_contents("php://input")), Method 3 ($GLOBALS['HTTP_RAW_POST_DATA'])

Method 2 (file_get_contents("php://input")) :

$input = file_get_contents("php://input"); //接收POST数据
$xml = simplexml_load_string($input); //提取POST数据为simplexml对象
var_dump($xml);
Copy after login

Method 3 ($GLOBALS['HTTP_RAW_POST_DATA'])

$input = $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;];
libxml_disable_entity_loader(true);
$xml = simplexml_load_string($input, &#39;SimpleXMLElement&#39;, LIBXML_NOCDATA);
var_dump($xml);
Copy after login


For more PHP methods to obtain POST data, please pay attention to the PHP Chinese website for related articles!

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template