PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析


Posted in PHP onJuly 03, 2017

本文分析了PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别。分享给大家供大家参考,具体如下:

$_POST:通过 HTTP POST 方法传递的变量组成的数组。是自动全局变量。
$GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。

也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。
但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。

补充说明:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。

这是手册里写的:

总是产生变量包含有原始的 POST 数据。否则,此变量仅在碰到未识别 MIME 类型的数据时产生。不过,访问原始 POST 数据的更好方法是 php://input。$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。

问题: $HTTP_RAW_POST_DATA == $_POST 吗?

照手册所写 ,答案应该就为否。
假如不一样的话,他们的区别是什么呢?

我知道答案了,如下:

The RAW / uninterpreted HTTP POst information can be accessed with:
$GLOBALS['HTTP_RAW_POST_DATA']
This is useful in cases where the post Content-Type is not something PHP understands (such as text/xml).

也就是说,基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等

PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型

用Content-Type=text/xml 类型,提交一个xml文档内容给了php server,要怎么获得这个POST数据。

The RAW / uninterpreted HTTP POST information can be accessed with: $GLOBALS['HTTP_RAW_POST_DATA'] This is useful in cases where the post Content-Type is not something PHP understands (such as text/xml).

由于PHP默认只识别application/x-www.form-urlencoded标准的数据类型,因此,对型如text/xml的内容无法解析为$_POST数组,故保留原型,交给$GLOBALS['HTTP_RAW_POST_DATA'] 来接收。

另外还有一项 php://input 也可以实现此这个功能

php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。php://input 不能用于 enctype="multipart/form-data"。

应用:

a.htm:

<form action="post.php" method="post">
<input type="text" name="user">
<input type="password" name="password">
<input type="submit">
</form>

post.php:

<? echo file_get_contents("php://input"); ?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP实现小型站点广告管理(修正版)
Oct 09 PHP
php中获取关键词及所属来源搜索引擎名称的代码
Feb 15 PHP
php urlencode()与urldecode()函数字符编码原理详解
Dec 06 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
PHPThumb图片处理实例
May 03 PHP
PHP远程采集图片详细教程
Jul 01 PHP
php 数组随机取值的简单实例
May 23 PHP
Laravel重写用户登录简单示例
Oct 08 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
Oct 25 PHP
php7新特性的理解和比较总结
Apr 14 PHP
PHP策略模式写法
Apr 01 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 #PHP
利用PHP判断是否是连乘数字串的方法示例
Jul 03 #PHP
使用Zttp简化Guzzle 调用
Jul 02 #PHP
详解php几行代码实现CSV格式文件输出
Jul 01 #PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
Jun 30 #PHP
详解如何在云服务器上部署Laravel
Jun 30 #PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
Jun 30 #PHP
You might like
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
Dom 是什么的详细说明
2010/10/25 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
深入理解Javascript中的循环优化
2013/11/09 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
js制作简易年历完整实例
2015/01/28 Javascript
jquery图片切换插件
2015/03/16 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
python 从list中随机取值的方法
2020/11/16 Python
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
残疾人创业典型事迹
2014/02/01 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript
PyTorch中permute的使用方法
2022/04/26 Python
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python