$HTTP_RAW_POST_DATA和$_POST的相关知识
更新时间:2016-11-09 13:55来源:未知 作者:admin 点击:
次
$HTTP_RAW_POST_DATA在php.ini的 always_populate_raw_post_data选项设置为true时一直可以接收所有类型post数据,但设置为false时只有mime类型不为application/x-www-form-urlencoded时有值,但mime为multipart/form-da
$HTTP_RAW_POST_DATA在php.ini的always_populate_raw_post_data选项设置为true时一直可以接收所有类型post数据,但设置为false时只有mime类型不为application/x-www-form-urlencoded时有值,但mime为multipart/form-data时无效。但是php://input是可以正常使用的,举例如下:
form.php
<?php
$url = "http://localhost/do_form.php";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/xml'));//如果注释掉这一行,mime默认就是application/x-www-form-urlencoded
curl_setopt($ch, CURLOPT_POSTFIELDS, 'a=b&c=d');
curl_exec($ch);
curl_close($ch);
?>
do_form.php
<?php
echo file_get_contents('php://input');//这个一直有效,输出a=b&c=d
echo $HTTP_RAW_POST_DATA;//这个在注释掉CURLOPT_HTTPHEADE那一行之后会不输出任何值,保留那个header将会输出a=b&c=d
echo $_POST['a'];//在注释掉那个header或改成array('Content-Type:application/x-www-form-urlencoded')以后输出b,打开注释将无输出
?>
(责任编辑:admin)