zoukankan      html  css  js  c++  java
  • $POST 、$HTTP_RAW_POST_DATA、php://input三者之间的差别

    $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']));
    ?>

  • 相关阅读:
    PHP数组
    java中线程池的几种实现方式
    JAVA是是如何处理字符的。
    byte范围及8种常见数据类型
    对Spring 及SpringMVC的理解
    Nginx+Tomcat搭建负载均衡
    nginx + tomcat配置负载均衡
    Java并发编程:Lock
    Java内部类详解
    奇怪的Java题:为什么1000 == 1000返回为False,而100 == 100会返回为True?
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5112895.html
Copyright © 2011-2022 走看看