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数组实现无限分类,不使用数据库,不使用递归.
Dec 09 PHP
兼容PHP5的PHP目录管理函数库
Jul 10 PHP
PHP array_flip() 删除重复数组元素专用函数
May 16 PHP
Uncaught exception com_exception with message Failed to create COM object
Jan 11 PHP
php二维数组转成字符串示例
Feb 17 PHP
兼容ie6浏览器的php下载文件代码分享
Jul 14 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
Jun 20 PHP
php支付宝在线支付接口开发教程
Sep 19 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
在 Laravel 6 中缓存数据库查询结果的方法
Dec 11 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 24 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简单封装了一些常用JS操作
2007/02/25 PHP
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
2015/02/08 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
容易被忽略的JS脚本特性
2011/09/13 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
JS实现520 表白简单代码
2018/05/21 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
JS面向对象之单选框实现
2020/01/17 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
python对url格式解析的方法
2015/05/13 Python
Python标准库之Sys模块使用详解
2015/05/23 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
Python文件操作的面试题
2013/06/22 面试题
超市促销实习自我鉴定
2013/09/23 职场文书
继承公证书
2014/04/09 职场文书
文秘自荐信
2014/06/28 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
委托书英文
2015/01/28 职场文书
优秀团员个人总结
2015/02/26 职场文书
班主任经验交流心得体会
2015/11/02 职场文书