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生成随机数或者字符串的代码
Sep 05 PHP
PHP5与MySQL数据库操作常用代码 收集
Mar 21 PHP
PHP OPCode缓存 APC详细介绍
Oct 12 PHP
php获取网页请求状态程序示例
Jun 17 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
typecho插件编写教程(三):保存配置
May 28 PHP
php自动给网址加上链接的方法
Jun 02 PHP
php使用GD库创建图片缩略图的方法
Jun 10 PHP
php技术实现加载字体并保存成图片
Jul 27 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 PHP
PHP中“=&gt;
Mar 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
thinkPHP自定义类实现方法详解
2016/11/30 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
js中的深浅拷贝问题简析
2019/05/10 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
如何通过python画loss曲线的方法
2019/06/26 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
园长自我鉴定
2013/10/06 职场文书
法制宣传月活动总结
2014/04/29 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
品质标语大全
2014/06/21 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
简单租房协议书
2014/10/21 职场文书
Python中的套接字编程是什么?
2021/06/21 Python
SQL之各种join小结详细讲解
2021/08/04 MySQL