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 相关文章推荐
PHP4之真OO
Oct 09 PHP
php分页示例代码
Mar 19 PHP
elgg 获取文件图标地址的方法
Mar 20 PHP
分享一个PHP数据流应用的简单例子
Jun 01 PHP
php 函数中使用static的说明
Jun 01 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
May 04 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
十大使用PHP框架的理由
Sep 26 PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 PHP
Zend Framework框架中实现Ajax的方法示例
Jun 27 PHP
PHP获取HTTP body内容的方法
Dec 31 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 开发环境配置(Zend Studio)
2010/04/28 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
项目实践之javascript技巧
2007/12/06 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
2020/09/08 Javascript
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
windows下python虚拟环境virtualenv安装和使用详解
2019/07/16 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
几个人围成一圈的问题
2013/09/26 面试题
财会自我鉴定范文
2013/12/27 职场文书
心得体会怎么写
2013/12/30 职场文书
教堂婚礼主持词
2014/03/14 职场文书
经典促销广告词大全
2014/03/19 职场文书
《桥》教学反思
2014/04/09 职场文书
运动员入场词
2015/07/18 职场文书
公司车辆管理制度
2015/08/04 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书
python基础之爬虫入门
2021/05/10 Python