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 相关文章推荐
改进的IP计数器
Oct 09 PHP
dedecms中显示数字验证码的修改方法
Mar 21 PHP
php下实现在指定目录搜索指定类型文件的函数
Oct 03 PHP
php中inlcude()性能对比详解
Sep 16 PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 PHP
php代码书写习惯优化小结
Jun 20 PHP
php上传文件,创建递归目录的实例代码
Oct 18 PHP
php获取操作系统语言代码
Nov 04 PHP
PHP判断数据库中的记录是否存在的方法
Nov 14 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
Yii2实现ActiveForm ajax提交
May 26 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
PHP5/ZendEngine2的改进
2006/10/09 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
JS实现闪动的title消息提醒效果
2014/06/20 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
Python实现通过文件路径获取文件hash值的方法
2017/04/29 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
Pycharm修改python路径过程图解
2020/05/22 Python
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
怎样让char类型的东西转换成int类型
2013/12/09 面试题
个人求职信范文分享
2013/12/13 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
经典促销广告词大全
2014/03/19 职场文书
座谈会主持词
2014/03/20 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
法律意见书范文
2015/05/20 职场文书
郭明义电影观后感
2015/06/08 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书