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 相关文章推荐
Apache2 httpd.conf 中文版
Nov 17 PHP
PHP 开发环境配置(Zend Server安装)
Apr 28 PHP
PHP合并数组+与array_merge的区别分析
Aug 01 PHP
php中AES加密解密的例子小结
Feb 18 PHP
WordPress中自定义后台管理界面配色方案的小技巧
Dec 29 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
Sep 30 PHP
php7安装mongoDB扩展的方法分析
Aug 02 PHP
Yii Framework框架使用PHPExcel组件的方法示例
Jul 24 PHP
php使用pecl方式安装扩展操作示例
Aug 12 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 PHP
关于laravel模板中生成URL的几种模式总结
Oct 18 PHP
通过PHP实现用户注册后邮箱验证激活
Nov 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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
php实现的简单数据库操作Model类
2016/11/16 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
js播放wav文件(源码)
2013/04/22 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
js实现动态显示时间效果
2017/03/06 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
vue基础之事件v-onclick=&quot;函数&quot;用法示例
2019/03/11 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
深入理解python中的atexit模块
2017/03/07 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
python3.5安装python3-tk详解
2019/04/26 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
Pandas分组与排序的实现
2019/07/23 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
Python API len函数操作过程解析
2020/03/05 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
自我鉴定怎么写
2013/12/05 职场文书
采购助理岗位职责
2014/02/16 职场文书
大二学习计划书范文
2014/04/27 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
学校与家长安全责任书
2014/07/23 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
2015入党自荐书范文
2015/03/05 职场文书
python利用while求100内的整数和方式
2021/11/07 Python