zoukankan      html  css  js  c++  java
  • file_get_contents('php://input') 和POST的区别

    之前记得写过这2者的区别,今天看群里有个朋友也提出了怪异的问题,说是“file_get_contents('php://input')获取不到curl post请求的数据的问题”?
    其实这并不是所谓的"怪异",理解2者的区别其实就明白原因啦,好,直接举个例子吧,2个文件:
    1:发送数据的文件,如下:

    复制代码
    <?php
    $ch = curl_init();
    $data = ['username' => '周伯通', 'password' => '123456','sign'=>'asdfg123456'];
    $url = 'http://xxx.com/fpost.php';//fpost.php是接受数据的文件,代码在下面
    $ch = curl_init(); //初始化curl
    curl_setopt($ch, CURLOPT_URL, $url);//设置链接
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置是否返回信息
    curl_setopt($ch, CURLOPT_POST, 1);//设置为POST方式
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//POST数据
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
    $response = curl_exec($ch);//接收返回信息
    if(curl_errno($ch)){//出错则显示错误信息
        print curl_error($ch);
    }
    curl_close($ch); //关闭curl链接
    echo $response;//显示返回信息
    复制代码

    2:接受数据的文件,如下:

    <?php
    $res = file_get_contents('php://input');
    var_dump('file_get_contents 数据是:'.$res);
    echo'<br> post 数据是:';
    var_dump($_POST);

    运行后我们会发现:file_get_contents('php://input')不能接收curl post过来的数组。

    解释:
    如果POST的原始数据是一维数组或&拼接的标准格式的键值对字符串,那么可以用$_POST来获取。
    如果要通过file_get_contents获取,这种情况下可以发送json字符串,用json_encode转一下,或者使用http_build_query:比如上面修改如下:

    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));//POST数据

    结果:

    string(97) "file_get_contents 数据是:username=%E5%91%A8%E4%BC%AF%E9%80%9A&password=123456&sign=asdfg123456" 
    post 数据是:array(3) { ["username"]=> string(9) "周伯通" ["password"]=> string(6) "123456" ["sign"]=> string(11) "asdfg123456" }

    所以大家在使用中,注意下传参的方式即可解决问题。无非就这2种比较常用的数据传参方式啦。

    原文:https://www.cnblogs.com/phpper/p/9574419.html

  • 相关阅读:
    天天生鲜(一) 表设计
    linux 分区管理
    linux rpm包管理 yum管理
    linux命令
    linux IP 网关配置
    Django的JWT机制工作流程
    django CBV模式源码执行过程
    django 网站上传资源的显示与配置
    图片服务器的架构演进
    php获取指定目录下的所有文件列表
  • 原文地址:https://www.cnblogs.com/showcase/p/11732571.html
Copyright © 2011-2022 走看看