PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析

作者:china_skag 时间:2023-11-22 22:00:16 

本文分析了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,$GLOBALS[HTTP,RAW,POST,DATA],$,POST
0
投稿

猜你喜欢

  • ASP初学者常犯的几个错误

    2007-09-07 10:19:00
  • Web开发者的百科全书——Google DocType

    2008-07-03 13:06:00
  • PHP获取二叉树镜像的方法

    2023-07-13 02:57:39
  • 实例讲解PHP验证邮箱是否合格

    2023-11-22 07:05:53
  • 微信小程序实现图片轮播及文件上传

    2023-09-05 00:12:52
  • asp获取完整url地址代码

    2010-03-22 14:25:00
  • Apple在Safari 4中抛弃品牌视觉设计

    2009-02-26 13:05:00
  • sqlserver中重复数据值只取一条的sql语句

    2012-06-06 19:46:31
  • 简单实现Standby SQL Server 数据库的方法

    2009-10-23 09:26:00
  • 使用mysqli完成事务处理

    2011-03-29 15:49:00
  • sqlserver isnull在数据库查询中的应用

    2011-12-01 10:30:25
  • 如何做一个只搜索本网站的引擎?

    2010-07-12 19:02:00
  • Python之ascii转中文的实现

    2023-08-24 19:39:12
  • Python pytest装饰器总结(实例详解)

    2023-06-12 07:15:14
  • js实现登录注册框手机号和验证码校验(前端部分)

    2023-09-13 02:41:37
  • Dreamweaver初学者常见问题解答

    2007-02-03 11:39:00
  • Python响应对象text属性乱码解决方案

    2023-07-31 13:06:41
  • php自动获取字符串编码函数mb_detect_encoding

    2023-09-12 03:32:11
  • 在ASP中使用SQL语句之5:开始执行

    2007-08-11 12:36:00
  • 使用window.name解决跨域问题

    2008-09-04 12:10:00
  • asp之家 网络编程 m.aspxhome.com