zoukankan      html  css  js  c++  java
  • $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']));

    ?>

  • 相关阅读:
    redis 源码阅读 数值转字符 longlong2str
    redis 源码阅读 内部数据结构--字符串
    redis 查看的版本
    redis 配置
    redis 基础
    redis 安装
    git 中关于LF 和 CRLF 的问题
    git 常用命令
    linux svn 服务端搭建
    测试开发之Django——No8.Django中的视图与URL配置
  • 原文地址:https://www.cnblogs.com/cwl168/p/4022843.html
Copyright © 2011-2022 走看看