zoukankan      html  css  js  c++  java
  • 借助curl理解$GLOBALS['HTTP_RAW_POST_DATA'] ,$_POST, php://input

    发送请求代码

    post.php

    <?php
    $url='http://localhost/web/curl/url.php';
    $data='a=123|b=2&c=3';
    $header=array();
    //$header[]="content-type:text/xml";
    $ch=curl_init($url);
    curl_setopt($ch,CURLOPT_POST,1);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
    $con=curl_exec($ch);
    curl_close($ch);
    print_r($con);

    接收请求的代码

    url.php

    <?php
    echo "<h3>HTTP_RAW_POST_DATA:</h3>";
    print_r($GLOBALS["HTTP_RAW_POST_DATA"]);
    echo "<hr><h3>post:</h3>";
    print_r($_POST);
    echo "<hr> <h3>input:</h3>";
    print_r(file_get_contents("php://input"));
    echo "<hr>";
    
    echo "CONTENT_TYPE:".($_SERVER['CONTENT_TYPE']);

    post.php执行结果

    HTTP_RAW_POST_DATA:


    post:

    Array ( [a] => 123|b=2 [c] => 3 )


    input:

    a=123|b=2&c=3


    CONTENT_TYPE:application/x-www-form-urlencoded

    1.说明当没传content-type时 php默认是application/x-www-form-urlencoded ,此时php可识别 ,$GLOBALS["HTTP_RAW_POST_DATA"] 为空,post即为识别后生成的数组,php://input 获取原始数据

    如果穿的数据时123456 $_POST里因为没key也是无数据的,php://input里还是原始数据

    2.如果设置$header[]="content-type:text/xml";

    执行结果是

    HTTP_RAW_POST_DATA:

    a=123|b=2&c=3


    post:

    Array ( )


    input:

    a=123|b=2&c=3


    CONTENT_TYPE:text/xml

    此时Post里是没数据的,HTTP_RAW_POST_DATA 里有数据

    php://input 里始终是原始数据

    综上所诉:

    当content-type为默认的 application/x-www-form-urlencoded 时php可处理Post过来的数据并组合生成$_POST数组 $GLOBALS["HTTP_RAW_POST_DATA"] 里此时无值

    当content-type为其它类型时php不能处理,生成不了$_POST数组,$GLOBALS["HTTP_RAW_POST_DATA"]里和php://input里都是原始数据

    php://input在任何情况下均是最原始post来的数据

  • 相关阅读:
    TreeSet集合的add()方法的源码解析
    Ubuntu下定时任务和自启动任务的部署
    基于Django的独立运行脚本开发
    python做量化交易干货分享
    使用Glide以及OkHttp集成
    Redis实现简单消息队列
    Linux下高并发socket最大连接数
    Ubuntu14.04部署pyspider的过程
    pymongo "ServerSelectionTimeoutError: No servers found yet" 错误的解决
    gitolite服务器部署中的一些坑
  • 原文地址:https://www.cnblogs.com/HKUI/p/5536953.html
Copyright © 2011-2022 走看看