发送请求代码

post.php

<?php
$url='http://localhost/web/curl/url.php';
$data='a=123|b=2&c=3';
$header=array();
//$header[]="content-type:text/xml";
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
$con=curl_exec($ch);
curl_close($ch);
print_r($con);

接收请求的代码

url.php

<?php
echo "<h3>HTTP_RAW_POST_DATA:</h3>";
print_r($GLOBALS["HTTP_RAW_POST_DATA"]);
echo "<hr><h3>post:</h3>";
print_r($_POST);
echo "<hr> <h3>input:</h3>";
print_r(file_get_contents("php://input"));
echo "<hr>"; echo "CONTENT_TYPE:".($_SERVER['CONTENT_TYPE']);

post.php执行结果

HTTP_RAW_POST_DATA:


post:

Array ( [a] => 123|b=2 [c] => 3 )


input:

a=123|b=2&c=3


CONTENT_TYPE:application/x-www-form-urlencoded

1.说明当没传content-type时 php默认是application/x-www-form-urlencoded ,此时php可识别 ,$GLOBALS["HTTP_RAW_POST_DATA"] 为空,post即为识别后生成的数组,php://input 获取原始数据

如果穿的数据时123456 $_POST里因为没key也是无数据的,php://input里还是原始数据

2.如果设置$header[]="content-type:text/xml";

执行结果是

HTTP_RAW_POST_DATA:

a=123|b=2&c=3


post:

Array ( )


input:

a=123|b=2&c=3


CONTENT_TYPE:text/xml

此时Post里是没数据的,HTTP_RAW_POST_DATA 里有数据

php://input 里始终是原始数据

综上所诉:

当content-type为默认的 application/x-www-form-urlencoded 时php可处理Post过来的数据并组合生成$_POST数组 $GLOBALS["HTTP_RAW_POST_DATA"] 里此时无值

当content-type为其它类型时php不能处理,生成不了$_POST数组,$GLOBALS["HTTP_RAW_POST_DATA"]里和php://input里都是原始数据

php://input在任何情况下均是最原始post来的数据

借助curl理解$GLOBALS['HTTP_RAW_POST_DATA'] ,$_POST, php://input的更多相关文章

  1. $_POST 变量以及$GLOBALS['HTTP_RAW_POST_DATA']

    $_POST 变量是一个数组,内容是由 HTTP POST 方法发送的变量名称和值. $_POST 变量用于收集来自 method="post" 的表单中的值.从带有 POST 方 ...

  2. php获取post参数的几种方式 RPC 规定接收取值方式 $GLOBALS['HTTP_RAW_POST_DATA'];

    http://www.cnblogs.com/zhepama/p/4022606.html PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型. ...

  3. PHP 关于 $GLOBALS['HTTP_RAW_POST_DATA']

    PHP 关于 $GLOBALS['HTTP_RAW_POST_DATA'] 最近用微信api写接口时用到了这个,记录,下面转载开始: —————————— 这是手册里写的 总是产生变量包含有原始的 P ...

  4. 关于接收POST请求 $GLOBALS['HTTP_RAW_POST_DATA']

    总是产生变量包含有原始的 POST 数据.否则,此变量仅在碰到未识别 MIME 类型的数据时产生.不过,访问原始 POST 数据的更好方法是 php://input.$HTTP_RAW_POST_DA ...

  5. curl 理解

    PHP使用CURL详解   CURL是一个非常强大的开源库,支持很多协议,包括HTTP.FTP.TELNET等,我们使用它来发送HTTP请求.它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP ...

  6. php使用curl提交xml数据

    $xml_data ='<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_ ...

  7. $POST 、$HTTP_RAW_POST_DATA、php://input三者之间的区别

    $POST .$HTTP_RAW_POST_DATA.php://input三者之间的区别 访问原始 POST 数据的更好方法是 php://input或者$HTTP_RAW_POST_DATA.$H ...

  8. $POST 、$HTTP_RAW_POST_DATA、php://input三者之间的差别

    $POST .$HTTP_RAW_POST_DATA.php://input三者之间的差别 总是产生变量包括有原始的 POST 数据.否则,此变量仅在碰到未识别 MIME 类型的数据时产生.只是,訪问 ...

  9. 微信公共平台php用$GLOBALS["HTTP_RAW_POST_DATA"]收不到信息解决方法

    http://www.cnblogs.com/shendiao/archive/2013/04/24/3041450.html <?php /** * wechat php test */ // ...

随机推荐

  1. java--何时处理Exception(哪一个层级),包装的基础类处理任务尽可能简洁,写入日志,检查null等运行时异常

    1. 运行时异常和受检异常 2. 提前预防运行时异常.最常发生的是NPE,而检查NPE是程序员的基本职责.其他的,如除0等运行时异常的检查,需要程序员仔细检查,每个函数都得检查(除非可以确定不会有空指 ...

  2. linux配置静态ip,关闭防火墙

    在vmware下安装centos6.5通过桥接方式访问外网,因此需要配置ip. 一.ip配置 1.1. 配置动态ip vi /etc/sysconfig/network-scripts/ifcfg-e ...

  3. mac用ssh连接linux云服务器中文乱码或无法显示解决

    问题1:服务器是ubuntu16.04,用mac自带的ssh连接后无法正常输入中文? 解:这种情况一般是终端和服务器的字符集不匹配,MacOSX下默认的是utf8字符集. 打开编辑 .bashrc 文 ...

  4. CodeForces - 197D

    开场连wa三发A题,差点心态崩了,还好坚持打完了,一共A了三题 A题,判断能不能放第一个圆,能放的话,先手比赢 #include<map> #include<set> #inc ...

  5. 四边形不等式优化_石子合并问题_C++

    在动态规划中,经常遇到形如下式的状态转移方程: m(i,j)=min{m(i,k-1),m(k,j)}+w(i,j)(i≤k≤j)(min也可以改为max) 上述的m(i,j)表示区间[i,j]上的某 ...

  6. 查看SQLServer的最大连接数

    如何查看SQLServer的最大连接数?相信很多人对个很有兴趣,一下就给出两种方法: 1. 查询服务器属性 默认服务设置为0(表示不受限制). 2. SQL查看最大连接数 这里的32767就是服务器的 ...

  7. split方法的使用

    // 分隔竖线 String[] param = text.split("\\|");   //分隔问号 String name = singleResource.get(&quo ...

  8. 【machine learning通俗讲解code逐行注释】之线性回归实现

    现在机器学习算法在分类.回归.数据挖掘等问题上运用的十分广泛,对于初学者来说,可能一听到'算法'或其他的专属名词都感觉高深莫测,以致很多人望而却步,这让很多人在处理很多问题上失去了一个很有用的工具.机 ...

  9. ionic2——开发利器之Visual Studio Code 常用快捷键

    主命令框 F1 或 Ctrl+Shift+P: 打开命令面板.在打开的输入框内,可以输入任何命令,例如: 按一下 Backspace 会进入到 Ctrl+P 模式 在 Ctrl+P 下输入 >  ...

  10. window.location与window.open()的区别

    "top.location.href"是最外层的页面跳转"window.location.href"."location.href"是本页面 ...