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


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

    访问原始 POST 数据的更好方法是 php://input或者$HTTP_RAW_POST_DATA。$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。 

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

    ?>

  • 相关阅读:
    f2fs源码解析(五) node管理结构梳理
    没有什么好神秘的: wait_on_page_bit
    write_back 浅浅分析
    f2fs解析(六)
    转载软件需求文档标准格式
    转载 如何设计一个优秀的数据库
    转载 MySQL创建表的语句 示例
    equals和==的区别 (Java基础)
    转载 【Linux】Linux中常用操作命令
    windows 注册表
  • 原文地址:https://www.cnblogs.com/cwl168/p/4022843.html
Copyright © 2020-2023  润新知