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
用Simple Excel导出xls实现方法
Dec 06 PHP
php使用post数组的键值创建同名变量并赋值的方法
Apr 03 PHP
php实现将任意进制数转换成10进制的方法
Apr 17 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
Oct 10 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 PHP
php 获取文件行数的方法总结
Oct 11 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
Sep 01 PHP
php curl操作API接口类完整示例
May 21 PHP
浅谈Laravel模板实体转义带来的坑
Oct 22 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中将数组转成XML格式的实现代码
2011/08/08 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
PHP 获取ip地址代码汇总
2015/07/05 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
jquery插件之easing 动态菜单
2010/08/21 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
python奇偶行分开存储实现代码
2018/03/19 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
档案接收函范文
2014/01/10 职场文书
装修五一活动策划案
2014/01/23 职场文书
英语专业个人求职信范文
2014/02/01 职场文书
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
2014年电厂工作总结
2014/12/04 职场文书
建国大业观后感600字
2015/06/01 职场文书
python基础学习之生成器与文件系统知识总结
2021/05/25 Python
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS