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 minixml详解
Jul 19 PHP
深入PHP magic quotes的详解
Jun 17 PHP
php实现统计邮件大小的方法
Aug 06 PHP
php获取当前url地址的方法小结
Jan 10 PHP
PHP给前端返回一个JSON对象的实例讲解
May 31 PHP
微信企业转账之入口类分装php代码
Oct 01 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
Mar 01 PHP
PHP CURL使用详解
Mar 21 PHP
PHP中define() 与 const定义常量的区别详解
Jun 25 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 PHP
laravel 框架执行流程与原理简单分析
Feb 01 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中使用模板的方法
2008/05/24 PHP
php入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
php文件系统处理方法小结
2016/05/23 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
js下获取div中的数据的原理分析
2010/04/07 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
Python操作MySQL数据库9个实用实例
2015/12/11 Python
python基础教程之Filter使用方法
2017/01/17 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
Html5实现二维码扫描并解析
2016/01/20 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
新浪网技术部笔试题
2016/08/26 面试题
党委书记岗位职责
2013/11/24 职场文书
北京大学自荐信范文
2014/01/28 职场文书
服务明星事迹材料
2014/12/29 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python