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 创建文件(文件夹)以及目录操作代码
Mar 04 PHP
PHP中改变图片的尺寸大小的代码
Jul 17 PHP
PHP开发者常犯的10个MySQL错误更正剖析
Jan 30 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
php中cookie的使用方法
Mar 29 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
Jan 07 PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
Apr 17 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 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 ftp文件上传函数(基础版)
2010/06/03 PHP
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
php查询whois信息的方法
2015/06/08 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
JavaScript中获取元素索引的函数
2010/09/10 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
2017/01/18 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
js+canvas实现刮刮奖功能
2020/09/13 Javascript
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
详解Python的Django框架中的中间件
2015/07/24 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
Python处理中文标点符号大集合
2018/05/14 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
python使用tornado实现简单爬虫
2018/07/28 Python
详解Python中的type和object
2018/08/15 Python
使用Python处理BAM的方法
2018/09/28 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Python面向对象之Web静态服务器
2019/09/03 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
Hanky Panky官方网站:内衣和睡衣
2019/07/25 全球购物
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
如何提高MySql的安全性
2014/06/19 面试题
卫生安全检查制度
2014/02/04 职场文书
小学生保护环境倡议书
2014/05/15 职场文书
Consul在linux环境的集群部署
2022/04/08 Servers