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 结果集的分页实现代码
Mar 10 PHP
php 学习资料零碎东西
Dec 04 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
DOM XPATH获取img src值的query
Sep 23 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
THINKPHP支持YAML配置文件的设置方法
Mar 17 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
Mar 19 PHP
php登录超时检测功能实例详解
Mar 21 PHP
thinkPHP5实现的查询数据库并返回json数据实例
Oct 23 PHP
PHP实现将base64编码字符串转换成图片示例
Jun 22 PHP
php获取微信基础接口凭证Access_token
Aug 23 PHP
PHP与Web页面交互操作实例分析
Jun 02 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 stream_context_create()作用和用法分析
2011/03/29 PHP
php使用$_POST或$_SESSION[]向js函数传参
2014/09/16 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
javascript call和apply方法
2008/11/24 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
2010/07/20 Javascript
用js解决数字不能换行问题
2010/08/10 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
2015/11/25 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
vue自定义一个v-model的实现代码
2018/06/21 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
python学习之matplotlib绘制散点图实例
2017/12/09 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
阿联酋航空假期:Emirates Holidays
2018/03/20 全球购物
会计电算化个人求职信范文
2014/01/24 职场文书
教学实验楼管理制度
2014/02/01 职场文书
2014年五四青年节演讲稿范文
2014/04/22 职场文书
协议书格式
2014/04/23 职场文书
高中综合实践活动总结
2014/07/07 职场文书
2014和解协议书范文
2014/09/15 职场文书
2014年管理工作总结
2014/11/22 职场文书
安全主题班会教案
2015/08/12 职场文书
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技