`

$HTTP_RAW_POST_DATA

    博客分类:
  • php
 
阅读更多

转自:http://www.cnblogs.com/xwblog/archive/2011/12/23/2299672.html

这是手册里写的

总是产生变量包含有原始的 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中$GLOBALS[HTTP_RAW_POST_DATA]和$_POST的区别分析

    本文分析了PHP中$GLOBALS[‘HTTP_RAW_POST_DATA’]和$_POST的区别。分享给大家供大家参考,具体如下: $_POST:通过 HTTP POST 方法传递的变量组成的数组。是自动全局变量。 $GLOBALS['HTTP_RAW_POST_DATA'] :总是...

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

    主要介绍了PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别,结合具体实例形式分析了$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的功能与使用过程中的区别,需要的朋友可以参考下

    php中$_POST与php://input的区别实例分析

    $_POST 与 php教程://input可以取到值,$HTTP_RAW_POST_DATA 为空 $_POST 以关联数组方式组织提交的数据,并对此进行编码处理,如urldecode,甚至编码转换 php://input 也可以实现此这个功能可以获得POST的原始数据...

    php版微信返回用户text输入的方法

    // $PostData = $HTTP_RAW_POST_DATA; $PostData = file_get_contents&#40;"php://input"&#41;; //判断POST是否为空 if(!$PostData){ echo "wrong input!"; exit(0); } //解析XML字符串 $xmlObj = simplexml_load_...

    php获取POST数据的三种方法实例详解

    php获取POST数据的三种方法 方法一,$_POST $_POST或$_REQUEST存放的是PHP以key=&gt;value的形式格式化以后的数据。...同$HTTP_RAW_POST_DATA比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.

    PHP获取POST数据的几种方法汇总

    一、PHP获取POST数据的几种方法 方法1、最常见的方法是:$_...和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。 php://input 不能用于 enctype=”multipart/form-data”。

    PHP输入流php://input实例讲解

    It is a less memory intensive alternative to$HTTP_RAW_POST_DATA and does not need any special php.ini directives. php://input is not available with enctype=”multipart/form-data”. 翻译过来,是这样...

    PHP输入流php://input介绍

    It is a less memory intensive alternative to $HTTP_RAW_POST_DATA and does not need any special php.ini directives. php://input is not available with enctype=”multipart/form-data”. 翻译过来,是这样...

    http:sabrehttp库提供用于处理http请求和响应的实用程序

    该库实际上是以下PHP构造的包装: 输入: $_GET , $_POST , $_SERVER , php://input或$HTTP_RAW_POST_DATA 。 对于输出: php://output或echo , header() 。 该库提供的是一个Request对象和一个Response对象。 ...

    PHP输入输出流学习笔记

    PHP输入和输出流是通过php://来访问的,它允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的... POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA(原生的post数据),

    PHP 模拟$_PUT实现代码

    PHP里有$_GET,$_POST,但是没有$_PUT,所以如果需要使用它的话,则你不得不自己模拟一下: 复制代码 代码如下: $_PUT = array(); if (‘PUT’ == $_SERVER[‘REQUEST_METHOD’]) { parse_str(file_get_contents&#40...

    PHP获取HTTP body内容的方法

    有时候我们获取数据时需要根据Header中的格式来解析,比如上传一个json而不是一个文本。... POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令。 而

    php获取post中的json数据的实现方法

    突然想到了以前接触过flash将图片二进制流传给php,灵机一动用$GLOBALS[‘HTTP_RAW_POST_DATA’]获取到了。于是就深入的查了一下,原来PHP默认只识别application/x-www.form-urlencoded标准的数据类型,因此,对型如...

    php.ini-development

    data to the client. If your application's output exceeds this setting, PHP ; will send that data in chunks of roughly the size you specify. ; Turning on this setting and managing its maximum buffer ...

    php视频拍照上传头像功能实现代码分享

    如果要在php中实现视频拍照我们需要借助于flash插件了,由flash拍出的确照片我们再通过php的$GLOBALS [‘HTTP_RAW_POST_DATA’]接受数据,然后保存成图片就可以了,下面我来介绍一下。 使用的是$GLOBALS [...

    PHP微信开发之微信消息自动回复下所遇到的坑

    然后将用户信息和消息打包成XML格式的数据包,再将这个XML数据包通过POST方法提交到开发者设置的URL上。...而$GLOBALS[“HTTP_RAW_POST_DATA”]和$_POST是一样的,如果POST过来的数据PHP能够识别,则可以用$GLOB

    wx_sampie.php

    接收微信公众平台发送过来的用户消息,该消息数据结构为XML,不是php默认的识别数据类型,因此这里用了$GLOBALS['HTTP_RAW_POST_DATA']来接收,同时赋值给了$postStr if (!empty($postStr)) 判断$postStr是否为空,...

    PHP中模拟处理HTTP PUT请求的例子

    PHP里有$_GET,$_POST,但是没有$_PUT,所以如果需要使用它的话,则你不得不自己模拟一下: 复制代码 代码如下:  $_PUT = array(); if (‘PUT’ == $_SERVER[‘REQUEST_METHOD’]) {  parse_str(file_get_contents...

Global site tag (gtag.js) - Google Analytics