$_POST 与 $GLOBALS['HTTP_RAW_POST_DATA'] 区别

原文链接:http://blog.youkuaiyun.com/letianok/article/details/3941731

$_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标准的数据类型。
### HTTP POST 请求接收和处理数据的方式 HTTP POST 方法是一种常用的请求方式,主要用于向服务器发送数据。以下是几种常见的方式来接收和处理通过 POST 提交的数据: #### 使用 PHP 接收 POST 数据 PHP 中可以通过 `$_POST` 超全局变量来访问通过表单提交的 POST 数据。如果需要读取原始 POST 数据,则可以使用 `$GLOBALS['HTTP_RAW_POST_DATA']` 或者 `php://input`。 以下是一个简单的示例代码展示这三种不同的方式[^1]: ```php <?php // 方式一:使用 $_POST 获取表单数据 if (!empty($_POST)) { echo "接收到的 POST 数据:" . json_encode($_POST); } // 方式二:使用 $GLOBALS['HTTP_RAW_POST_DATA'] if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) { echo "接收到的原始 POST 数据:" . $GLOBALS['HTTP_RAW_POST_DATA']; } // 方式三:使用 php://input 流 $inputData = file_get_contents('php://input'); echo "通过 php://input 读取到的数据:" . $inputData; ?> ``` #### 支持更多 HTTP 方法的情况 除了 GET 和 POST 外,现代 Web 开发还可能涉及其他 HTTP 方法(如 DELETE、PUT 等)。然而由于大多数浏览器仅原生支持 GET 和 POST 方法,因此通常借助框架功能实现对这些方法的支持。例如 Spring 框架中的 `HiddenHttpMethodFilter` 可以让开发者通过设置 `_method` 参数模拟 PUT/DELETE 等操作[^2]。 #### Content-Type 的作用 无论采用哪种技术栈,理解 `Content-Type` 是非常重要的。它定义了消息体的内容编码形式,在 request headers 和 response headers 都可能出现该字段。对于 JSON 格式的 POST 请求来说,客户端应该将此头设为 `application/json`;而对于传统的 HTML 表单,默认情况下则是 `application/x-www-form-urlencoded` 或者 `multipart/form-data`[^3]。 ### 总结 综上所述,当涉及到如何利用 HTTP POST 来获取并解析传入的信息时,可以根据具体需求选用合适的工具和技术手段完成任务。无论是基础的语言特性还是高级的应用程序架构设计模式都可以帮助我们更好地理解和实践这一过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值