PHP获取POST数据的几种方法汇总


Posted in PHP onMarch 03, 2015

一、PHP获取POST数据的几种方法

方法1、最常见的方法是:$_POST['fieldname'];

说明:只能接收Content-Type: application/x-www-form-urlencoded提交的数据
解释:也就是表单POST过来的数据

方法2、file_get_contents("php://input");

说明:
允许读取 POST 的原始数据。
和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。
php://input 不能用于 enctype="multipart/form-data"。
解释:
对于未指定 Content-Type 的POST数据,则可以使用file_get_contents(“php://input”);来获取原始数据。
事实上,用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type,包括二进制文件流也可以。
所以用方法二是最保险的方法

方法3、$GLOBALS['HTTP_RAW_POST_DATA'];

说明:
总是产生 $HTTP_RAW_POST_DATA  变量包含有原始的 POST 数据。
此变量仅在碰到未识别 MIME 类型的数据时产生。
$HTTP_RAW_POST_DATA  对于 enctype="multipart/form-data"  表单数据不可用
如果post过来的数据不是PHP能够识别的,可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,
比如 text/xml 或者 soap 等等
解释:
$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST过来的原始数据。
$_POST或$_REQUEST存放的是 PHP以key=>value的形式格式化以后的数据。
但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST过来的数据取决于centent-Type的设置,即POST数据时 必须显式示指明Content-Type: application/x-www-form-urlencoded,POST的数据才会存放到 $GLOBALS['HTTP_RAW_POST_DATA']中

二、演示

1、PHP 如何获取POST过来的XML数据和解析XML数据

比如我们在开发微信企业号时,如何处理用户回复过来的数据呢?
文档: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
首先查阅文档,可知道:启用开发模式后,当用户给应用回复信息时,微信服务端会POST一串XML数据到已验证的回调URL

假设该URL为 http://www.xxx.com
Http请求方式: POST
http://www.xxx.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS×tamp=13500001234&nonce=123412323

POST的XML内容为:

<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>

那么怎么接收这段内容呃?
这时就可以用到:方法2(file_get_contents("php://input"))、方法3($GLOBALS['HTTP_RAW_POST_DATA'])

方法2(file_get_contents("php://input")):

$input = file_get_contents("php://input"); //接收POST数据

$xml = simplexml_load_string($input); //提取POST数据为simplexml对象

var_dump($xml);

方法3($GLOBALS['HTTP_RAW_POST_DATA'])

$input = $GLOBALS['HTTP_RAW_POST_DATA'];

libxml_disable_entity_loader(true);

$xml = simplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA);

var_dump($xml);
PHP 相关文章推荐
PHP 和 MySQL 基础教程(四)
Oct 09 PHP
php mysql Errcode: 28 终极解决方法
Jul 01 PHP
php 大数据量及海量数据处理算法总结
May 07 PHP
php 函数中使用static的说明
Jun 01 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
使用PHP获取汉字的拼音(全部与首字母)
Jun 27 PHP
php define的第二个参数使用方法
Nov 04 PHP
详解PHP序列化反序列化的方法
Oct 27 PHP
详解WordPress中分类函数wp_list_categories的使用
Jan 04 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 09 PHP
php 处理png图片白色背景色改为透明色的实例代码
Dec 10 PHP
php函数实现判断是否移动端访问
Mar 03 #PHP
php中instanceof 与 is_a()区别分析
Mar 03 #PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 #PHP
ecshop 2.72如何修改后台访问地址
Mar 03 #PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
Mar 03 #PHP
ecshop后台编辑器替换成ueditor编辑器
Mar 03 #PHP
php使用curl出现Expect:100-continue解决方法
Mar 03 #PHP
You might like
用PHP实现图象锐化代码
2007/06/14 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
2015/11/27 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
DHTML Slide Show script图片轮换
2008/03/03 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
2013/11/04 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
javascript设计模式之迭代器模式
2020/01/30 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
[02:32]DOTA2亚洲邀请赛 C9战队出场宣传片
2015/02/07 DOTA
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
Python遍历pandas数据方法总结
2018/02/09 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
计算机专业学生的自我评价
2013/12/15 职场文书
村官学习十八大感想
2014/01/15 职场文书
2014年大学生自我评价
2014/01/19 职场文书
《圆明园的毁灭》教学反思
2014/02/28 职场文书
新教师培训心得体会
2014/09/02 职场文书
公司慰问信范文
2015/03/23 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
七年级话题作文之执着
2019/11/19 职场文书
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python