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 命令行参数详解及应用
May 18 PHP
nginx+php-fpm配置文件的组织结构介绍
Nov 07 PHP
php使用exec shell命令注入的方法讲解
Nov 12 PHP
php权重计算方法代码分享
Jan 09 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
May 10 PHP
php实现XML和数组的相互转化功能示例
Feb 08 PHP
Yii2配置Nginx伪静态的方法
May 05 PHP
php变量与JS变量实现不通过跳转直接交互的方法
Aug 25 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
PHP检查URL包含特定字符串实例方法
Feb 11 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
Jun 05 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
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
数据库相关问题
2006/10/09 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
php常用表单验证类用法实例
2015/06/18 PHP
PHP设计模式概论【概念、分类、原则等】
2020/05/01 PHP
jquery中:input和input的区别分析
2011/07/13 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
JS实现的倒计时效果实例(2则实例)
2015/12/23 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
WebPack基础知识详解
2017/01/16 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
vue 组件中slot插口的具体用法
2018/04/03 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
github配置使用指南
2014/11/18 Python
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
python利用正则表达式提取字符串
2016/12/08 Python
Python中Threading用法详解
2017/12/27 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
人身损害赔偿协议书范本
2014/09/27 职场文书
毕业论文致谢信
2015/05/14 职场文书
2016入党积极分子党课培训心得体会
2016/01/06 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers