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 相关文章推荐
收集的DedeCMS一些使用经验
Mar 17 PHP
PHP XML操作的各种方法解析(比较详细)
Jun 17 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
PHP中常用的转义函数
Feb 28 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
PHP批量生成静态HTML的简单原理和方法
Apr 20 PHP
非常好用的Zend Framework分页类
Jun 25 PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 PHP
PHP编程入门的基本语法知识点总结
Jan 26 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 PHP
php把文件设置为插件的技巧方法
Feb 03 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 变量定义方法
2009/06/14 PHP
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
10个简化PHP开发的工具
2014/12/25 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
PHP实现微信提现功能
2018/09/30 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
JavaScript利用构造函数和原型的方式模拟C#类的功能
2014/03/06 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
webpack3之loader全解析
2017/10/26 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
Python利用Beautiful Soup模块修改内容方法示例
2017/03/27 Python
解读! Python在人工智能中的作用
2017/11/14 Python
Python基于多线程实现抓取数据存入数据库的方法
2018/06/22 Python
python3.5安装python3-tk详解
2019/04/26 Python
django自定义模板标签过程解析
2019/12/14 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
数控技术与应用毕业生自荐信
2013/09/24 职场文书
市场营销职业生涯规划书范文
2014/01/12 职场文书
户外拓展活动方案
2014/02/11 职场文书
幼儿园母亲节活动方案
2014/03/10 职场文书
我的梦想演讲稿
2014/04/30 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
2015年个人思想总结
2015/03/09 职场文书
男生贾里读书笔记
2015/06/30 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python