最近在开发微信接口,又学到了一些新的技术点,今天就把学到的关于接收数据的技术点给简单的罗列下. public function __construct($token, $wxuser = ''){ $this -> auth($token, $wxuser) || exit; if(IS_GET){ echo($_GET['echostr']); exit; }else{ $xml = file_get_contents("php://input"); $xml = new Si…
公司的微信公众号最近出现问题,所有的功能都不能用,一开始以为是微信公众号验证的问题,经过排查才发现是$GLOBALS['HTTP_RAW_POST_DATA']这里的问题,微信公众号会把用户的一些操作和输入已数据的格式发送到在微信公众号中配置的url地址(一般是项目的服务器),因为是数据所以就用$GLOBALS['HTTP_RAW_POST_DATA']接收,然后在做数据转换,但是在日志中发现这个值是null,然后经过排查发现不知道什么时候在php.ini中禁掉了这个函数 always_popu…
发送请求代码 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);…
$_POST:通过 HTTP POST 方法传递的变量组成的数组.是自动全局变量. $GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据.此变量仅在碰到未识别 MIME 类型的数据时产生. $HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用. 也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $…
$_POST 只有Coentent-Type的值为application/x-www.form-urlencoded和multipart/form-data两种类型时,$_POST才能获取到数据. $GLOBALS['HTTP_RAW_POST_DATA'] 如果php无法识别Coentent-Type类型,也就无法获取请求数据,这个时候,可以用$GLOBALS['HTTP_RAW_POST_DATA']来获取. php://input 1. 从使用结果看,php://input与$GLOBAL…
$_POST 只有Coentent-Type的值为application/x-www.form-urlencoded和multipart/form-data两种类型时,$_POST才能获取到数据. $GLOBALS['HTTP_RAW_POST_DATA'] 如果php无法识别Coentent-Type类型,也就无法获取请求数据,这个时候,可以用$GLOBALS['HTTP_RAW_POST_DATA']来获取. php://input 1. 从使用结果看,php://input与$GLOBAL…
http://www.cnblogs.com/zhepama/p/4022606.html PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型. php获取post参数的几种方式 1.$_POST['paramName'] 只能接收Content-Type: application/x-www-form-urlencoded提交的数据...php会将http请求body相应数据会 填入到数组$_POST,填入到$_POST数组中的数据是进行…
$_POST:通过 HTTP POST 方法传递的变量组成的数组.是自动全局变量. $GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据.此变量仅在碰到未识别 MIME 类型的数据时产生.$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用. 也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_…
http://www.cnblogs.com/shendiao/archive/2013/04/24/3041450.html <?php /** * wechat php test */ //define your token define("TOKEN", "endsh"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->responseMsg(); class wechatCallbac…
$_POST:通过 HTTP POST 方法传递的变量组成的数组.是自动全局变量. $GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据.此变量仅在碰到未识别 MIME 类型的数据时产生.$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用. 也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_…
---恢复内容开始--- $_POST:通过 HTTP POST 方法传递的变量组成的数组.是自动全局变量. $GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据.此变量仅在碰到未识别 MIME 类型的数据时产生.$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用. 也就是说基本上$GLOBALS['HTTP_RAW_POS…
PHP 关于 $GLOBALS['HTTP_RAW_POST_DATA'] 最近用微信api写接口时用到了这个,记录,下面转载开始: —————————— 这是手册里写的 总是产生变量包含有原始的 POST 数据.否则,此变量仅在碰到未识别 MIME 类型的数据时产生.不过,访问原始 POST 数据的更好方法是 php://input.$HTTP_RAW_POST_DATA 对于 enctype=”multipart/form-data” 表单数据不可用. 问题: $HTTP_RAW_POST_…
HTTP 协议是建立在 TCP/IP 协议之上的应用层规范,它把 HTTP 请求分为三个部分:请求行.请求头.消息主体.协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据使用什么编码方式. 服务端通常是根据请求头(headers)中的 Content-Type 来获知请求中的消息主体是用何种方式编码的,再对消息主体进行解析. 当客户端通过 POST 请求访问服务器时,可通过下面三种方式来获取 POST 提交的数据: 1. $_POST 仅当请求头中的…
$HTTP_RAW_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). 也就是说,基本上$GLOBALS['HTTP_…
$xml = $GLOBALS['HTTP_RAW_POST_DATA']; 打印$xml出来,结果是null 使用的是php7,原因是php7已移除这个全局变量,改成 $xml = file_get_contents("php://input"); 即可…
升级到php7后, 发现旧的web系统有些问题, 查看后才发现原来是php7不再支持HTTP_RAW_POST_DATA 原来系统一些地方, 使用$GLOBALS[‘HTTP_RAW_POST_DATA’]来获取数据, 在php7里无法获取了. 解决的方法也很简单, 只要使用php://input来代替就行. 比如 $data = $GLOBALS['HTTP_RAW_POST_DATA']; 改为 $data = file_get_contents('php://input'); 特别提醒,…
(转载)http://taoshi.blog.51cto.com/1724747/1165499 $data = file_get_contents("php://input");     php://input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令. 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 比激活 a…
总是产生变量包含有原始的 POST 数据.否则,此变量仅在碰到未识别 MIME 类型的数据时产生.不过,访问原始 POST 数据的更好方法是 php://input.$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用. 问题: $HTTP_RAW_POST_DATA == $_POST 吗? 照手册所写 ,答案应该就为否.假如不一样的话,他们的区别是什么呢? 我知道答案了,如下: The RAW / uninterp…
$data = file_get_contents("php://input"); //input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令. 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 比激活 always_populate_raw_post_data 潜在需要更少的内存. enctype="mul…
$data = file_get_contents("php://input"); php://input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令. 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 比激活 always_populate_raw_post_data 潜在需要更少的内存. enctype="…
$data = file_get_contents("php://input");    php://input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令. 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 比激活 always_populate_raw_post_data 潜在需要更少的内存. enctype=&q…
$data = file_get_contents("php://input");     php://input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令. 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 比激活 always_populate_raw_post_data 潜在需要更少的内存. enctype=&…
前台表单页:demo01.html 后台:demo01.php 输出结果: 备注:若前台通过Ajax的post提交过来的是json数据,需要对json数据进行解析:$data = json_decode($postStr,true); file_get_contents('php://input') 的优势: 1, php://input 可以读取http entity body中指定长度的值,由Content-Length指定长度,不管是POST方式或者GET方法提交过来的数据.但是,一般GE…
$_POST 变量是一个数组,内容是由 HTTP POST 方法发送的变量名称和值. $_POST 变量用于收集来自 method="post" 的表单中的值.从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制. $GLOBALS['HTTP_RAW_POST_DATA'],微信中接收post过来的xml数据,以$_post的形式接收不到,用的是globals的这种接收的.…
服务端php程序file_up.php function uploadFileBinary() { $this->initData(); $absoluteName = ""; $fid = ""; $handleWrite = null; if(!empty($GLOBALS['HTTP_RAW_POST_DATA']) && strlen($GLOBALS['HTTP_RAW_POST_DATA'])>0) { if(!empty($…
之前记得写过这2者的区别,今天看群里有个朋友也提出了怪异的问题,说是“file_get_contents('php://input')获取不到curl post请求的数据的问题”?其实这并不是所谓的"怪异",理解2者的区别其实就明白原因啦,好,直接举个例子吧,2个文件:1:发送数据的文件,如下: <?php $ch = curl_init(); $data = ['username' => '周伯通', 'password' => '123456','sign'=&g…
Coentent-Type仅在取值为application/x-www-data-urlencoded和multipart/form-data两种情况下,PHP才会将http请求数据包中相应的数据填入全局变量$_POST PHP不能识别的Content-Type类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA 需要特殊设置php.ini 只有Coentent-Type不为multipart/form-data的时候,PHP不会将http请求数据包中的相应数…
在API服务中,目前流行采用json形式来交互. 给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据. 接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型.因此,对型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之类…
相信很多人会跟我一样,token验证之后,发送消息给订阅号,没有消息返回. 以下,说一下我辛苦调试得到的解决办法: 首先,token验证: 自己写的token一直验证失败,找了好久,没有发现bug.实在没办法,就用了官方的示例代码.并且通过示例代码调试,发现了一个让我吐血的bug(也不算bug): token验证貌似要求字符编码格式!!!! 官方的示例代码,直接上传到服务器,token直接过! 把官方示例代码改为UTF-8格式,再上传覆盖,token失败!失败!失败! 后来,把自己写的修改为AN…
关于支付的流程之类的就不做解释,大家可以自行搜索! 微信支付 项目前提:本人用的是tp框架,PHP语言下载到微信平台提供的微信支付接口文件,放在了tp第三方类库vendor,命名为WxpayAPI,    WxpayAPI/lib/WxPay.Api.php 接口访问类; WxpayAPI/lib/WxPay.Config.php 配置账号信息; WxpayAPI/lib/WxPay.Data.php 数据对象基础类; WxpayAPI/lib/WxPay.Exception.php 微信支付A…