关闭

php://input 和 $_POST的区别

955人阅读 评论(0) 收藏 举报
分类:

这是手册里写的

总是产生变量包含有原始的 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");   ?>   
0
0
查看评论

$_POST,php://input,$_GET直接的区别

代码参考 1, php://input 可以读取http entity body中指定长度的值,由Content-Length指定长度,不管是POST方式或者GET方法提交过来的数据。但是,一般GET方法提交数据 时,http request entity body部分都为空。 ...
  • scchary
  • scchary
  • 2014-11-06 10:30
  • 1953

深入剖析PHP输入流 php://input与POST/GET的区别

PHP输入流php://input 在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php://input 对于php://input介绍,PHP官方手册文档有一段话对它进行了很明确地...
  • u011628250
  • u011628250
  • 2015-03-12 14:20
  • 2371

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

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

php中php://input和$_POST有什么不同

我们先来看两个实例   例子:php://input  代码如下        word" name="password">    ...
  • u010895694
  • u010895694
  • 2017-03-07 12:01
  • 443

PHP中post与get的区别

关键词: PHP,Post,Get,区别                     ...
  • u011130583
  • u011130583
  • 2014-11-17 21:54
  • 1821

php://input 和$_POST和$GLOBALS['HTTP_RAW_POST_DATA']的简单区别

看tp的源码,I函数看到这么一句: case 'get' : $input =& $_GET; break; case 'post' : $input =&a...
  • u010703523
  • u010703523
  • 2015-07-03 11:33
  • 1459

$POST 、$HTTP_RAW_POST_DATA、php://input三者之间的区别

$POST 、$HTTP_RAW_POST_DATA、php://input三者之间的区别
  • leyangjun
  • leyangjun
  • 2014-08-21 10:25
  • 2416

PHP表单中的Get与Post两种提交的方式的区别

PHP表单中的Get与Post两种提交的方式的区别 Get与Post的最主要区别就是Get是通过Url方式传送数据,而Post并不让用户看到传送的具体信息,这个区别决定了两者的用途。Get方式主要用于搜索,而Post方式主要用于向服务器传送用户操作信息。下面是Get与Post详细区别: 1、传输...
  • Skill_practice
  • Skill_practice
  • 2017-06-21 16:44
  • 585

$post和php://input区别

$_POST 与 php://input可以取到值,$HTTP_RAW_POST_DATA 为空; $_POST 以关联数组方式组织提交的数据,并对此进行编码处理,如urldecode,甚至编码转换; php://input 可通过输入流以文件读取方式取得未经处理的POST原始数据; php:...
  • qq_15766181
  • qq_15766181
  • 2015-07-27 23:17
  • 118

PHP表单处理-GET与POST区别

PHP表单处理 form表单的提交主要有两种方式:get和post GET方法接收的特点:所有输入的数据被加载到请求的URL地址后面,数据通过键/值对的方法加载。 GET方法接收的特点:把数据和请求的URL地址放在一起,浏览的结果放在缓存区内。由于GET放在URL后面传递,所以传递的数据大...
  • freshlover
  • freshlover
  • 2013-02-21 12:17
  • 8599
    个人资料
    • 访问:584817次
    • 积分:6191
    • 等级:
    • 排名:第4765名
    • 原创:136篇
    • 转载:105篇
    • 译文:0篇
    • 评论:62条
    博客专栏
    文章分类
    最新评论
    友情链接