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

总是产生变量包括有原始的 POST 数据。否则,此变量仅在碰到未识别 MIME 类型的数据时产生。只是,訪问原始 POST 数据的更好方法是 php://input。$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。

问题:    $HTTP_RAW_POST_DATA  == $_POST  吗?  --->答案是为否。







个人理解总结是这么玩的:

1:$POST我们经常使用的就不用介绍了吧

2:$GLOBALS['HTTP_RAW_POST_DATA']:

基本上$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数据。 

因为PHP默认仅仅识别application/x-www.form-urlencoded标准的数据类型,因此,对型如text/xml的内容无法解析为$_POST数组,故保留原型。交给$GLOBALS['HTTP_RAW_POST_DATA'] 来接收。





3:php://input 也能够实现此这个功能:

php://input 同意读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,而且不须要不论什么特殊的 php.ini 设置。php://input 不能用于 enctype="multipart/form-data"。

样例:

leyangjun.html

<form action="leyangjun.php" method="post">

  <p>First name: <input type="text" name="fname" /></p>

  <p>Last name: <input type="text" name="lname" /></p>

  <input type="submit" value="Submit" />

</form>





leyangjun.php:

<?

php





echo "<pre>";

print_r($_POST);





$data = file_get_contents('php://input');   //都要解下码

print_r(urldecode($data));

echo "<br>";

print_r(urldecode($GLOBALS['HTTP_RAW_POST_DATA']));

?>

随机推荐

  1. 以正确的方式开源 Python 项目 - 技术翻译 - 开源中国社区

    以正确的方式开源 Python 项目 - 技术翻译 - 开源中国社区 以正确的方式开源 Python 项目 英文原文:Open Sourcing a Python Project the Right ...

  2. Nginx特点

    Nginx特点:1,跨平台:Nginx 能够在大多数 Unix like OS编译执行,并且也有Windows的移植版本号.2,配置异常简单:很easy上手.配置风格跟程序开发一样,神一般的配置.3, ...

  3. 组件-------(一)redis系列--安装部署redis+实现redis分布式缓存 java+Spring+redis

    目的:解决单机session不能共享问题,插入查询数据库时间效率问题,实现分布式缓存. 准备材料:Redis 下载链接 http://pan.baidu.com/s/1dEGTxvV 相关jar包如果 ...

  4. HDU 4869 Turn the pokers(推理)

    HDU 4869 Turn the pokers 题目链接 题意:给定n个翻转扑克方式,每次方式相应能够选择当中xi张进行翻转.一共同拥有m张牌.问最后翻转之后的情况数 思路:对于每一些翻转,假设能确 ...

  5. JQuery开发工具和插件

    最近的研究jquery.为大家介绍几款开发工具.能够帮助你提高开发的效率. 1.Dreamweaver Dreamweaver是建立在WEB站点和应用程序的专业工具. 将可视化工具.应用程序开发功能和 ...

  6. iOS ,呼叫捕获抛出勉未知方法的障碍

    iOS 捕获未知方法的调用,避勉抛出异常 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 ...

  7. Mutex(测量)

    游标共享怎样使用Mutex kks 使用mutex以便保护对于下述基于parent cursor父游标和子游标child cursor的一系列操作 对于父游标parent cursor的操作: 基于发 ...

  8. IntelliJ IDEA Groovy(转)

    更新环境变量: source /etc/profile 验证是否成功: # groovy -version Groovy Version: 2.3.6 JVM: 1.7.0_67 Vendor: Or ...

  9. java api例子网站

    http://www.programcreek.com/java-api-examples/ http://www.apihome.cn/api/list/ http://www.docjar.com ...

  10. uvalive 2088 - Entropy(huffman编码)

    题目连接:2088 - Entropy 题目大意:给出一个字符串, 包括A~Z和_, 现在要根据字符出现的频率为他们进行编码,要求编码后字节最小, 然后输出字符均为8字节表示时的总字节数, 以及最小的 ...