发送请求代码

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. struts2——第一个案例

    步骤如下 编程工具等百度云分享 1.创建一个web项目 2.引入struts2的基本jar包 struts2的基本jar包百度云 链接:https://pan.baidu.com/s/1LBnPJhF ...

  2. JavaScript中this关键字的使用比较

    JavaScript中this关键字的使用比较 this关键字在JavaScript中,用的不能说比较多,而是非常多.那么熟悉this关键字的各种用法则显得非常关键. this有时候就是我们经常说的上 ...

  3. Codeforces Beta Round #17 D.Notepad 指数循环节

    D. Notepad time limit per test 2 seconds memory limit per test 64 megabytes input standard input out ...

  4. iSCSI 在Linux下的模拟实验

    5.iSCSI客户端(Initiator)配置 在Linux 2.6内核中提供了iscsi驱动,iSCSI 驱动(driver)使主机拥有了通过IP网络访问存储   的能力,驱动在主机(Initiat ...

  5. NFS的安装配置使用

    /////////////////////////////NFS///////////////////////////////////////////////////写在前面:NFS在数据传输/信息传 ...

  6. Spark- SparkSQL中 Row.getLong 出现NullPointerException错误的处理方法

    在SparkSQL中获取Row的值,而且Row的字段允许null时,在取值的时候取到null赋值给新的变量名会报NullPointerException错误, 可以先用row.isNullAt(ind ...

  7. 基础的JavaScript函数

    基础的JavaScript函数 1.首字母大写 2.去除数组重复项 3.数组的排序 4.闭包 1. 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字(使用JavaScript的map函 ...

  8. Flask的简单认识

    Flask的简单认识 Flask是轻量级的框架,适用于简单的程序 与Django的比较: Django: 无socket,中间件,路由,视图(CBV,FBV),模板,ORM, cookie,sessi ...

  9. Leetcode 1018. Binary Prefix Divisible By 5

    class Solution: def prefixesDivBy5(self, A: List[int]) -> List[bool]: ans,t = [],0 for a in A: t ...

  10. JavaScript例子

    模态框(JavaScript) <!DOCTYPE html> <html lang="en"> <head> <meta charset ...