之前记得写过这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

file_get_contents('php://input') 和POST的区别相关推荐

  1. php input 只接收文件内容,一文搞懂$_POST和file_get_contents(“php://input”)的区别

    今天来说一说 $_POST.file_get_contents("php://input")和$GLOBALS['HTTP_RAW_POST_DATA']的区别,这三个方法都是用来 ...

  2. file_get_contents(php://input)的使用方法

    $data = file_get_contents("php://input");     php://input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最 ...

  3. HTML button 和 input type=“button”的区别 / input type=submit 和button的区别

    HTML <button> 和 input type="button"的区别: 1. <button>标签里可以放文本图片等内容,与<input> ...

  4. 【转】file_get_contents(php://input)的使用方法

    $data = file_get_contents("php://input");     php://input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最 ...

  5. file_get_contents(php://input)

    $data = file_get_contents("php://input"); php://input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最好使用 ...

  6. html input change,input与change事件区别

    input与change事件区别属于前端实例代码,有关更多实例代码大家可以查看. 关于标题中两个事件的具体用法可以参阅如下两篇文章: (1).input事件参阅JavaScript input 事件一 ...

  7. python中str和input_python中input()与raw_input()的区别分析

    使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的 纯数字输入 当输入为纯数字时 input返回的是数值类型,如int,float ra ...

  8. python屏幕的交互(读取输出信息)input,raw_input的区别

    >>> input("your name?") your name?sam Traceback (most recent call last):   File & ...

  9. python命令行输入函数回退_Python2 中 input() 和 raw_input() 的区别

    在 Python2 中如要想要获得用户从命令行的输入,可以使用 input() 和 raw_input() 两个函数,那么这两者有什么区别呢? 我们先借助 help 函数来看下两者的文档注释: > ...

最新文章

  1. 分享两篇Google Map API的介绍
  2. Go 语言 Excel
  3. Linux 常用命令与设置
  4. android 马甲包 app,寻 实力android马甲包上架技术
  5. 10 Redis 主从复制
  6. PHP内核探索之变量(1)Zval(自己看过不错儿)
  7. 个人阅读 代码大全的阅读与提问
  8. 关于Ad-hoc测试的基本知识
  9. linux cache fs,新闻|Linux 上将出现一个新的文件系统:bcachefs
  10. c++中运算符重载(加号运算,左移运算,前置后置++运算符,赋值运算,关系运算,函数运算)
  11. Python程序从给定的N个数字中找到最大倍数
  12. HDU 5610 Baby Ming and Weight lifting
  13. 怎么学计算机制作ppt教程,ppt 制作教程步骤(新手电脑制作 ppt 详细步骤)
  14. CHIP-seq流程学习笔记(11)-使用GSEA软件进行GSEA分析
  15. 微信小程序踩坑——项目内文件夹删除不掉
  16. R语言可视化回归模型的残差直方图并进行残差分析(Histogram of Residuals)
  17. 热点综述 | 纵向微生物组研究的统计方法总结
  18. VS 2022 中英文切换
  19. 克里斯·麦克切斯尼《高效能人士的执行4原则》读书笔记
  20. jquery 删除数组

热门文章

  1. 优盘提示插入多卷集的最后一卷解决办法(5)
  2. 关于渲染流水线的几何变化
  3. Memcache架构新思考
  4. TreeView中右击直接获取节点的方法
  5. Transformer可以不需要Softmax?Kakao提出了UFO-ViT,性能高,计算量还小
  6. AI表情迁移、电影字幕自动翻译等,原来是这么玩的!
  7. 字节跳动 计算机视觉方向算法实习生 招聘!
  8. 火爆GitHub!3.2k Star的可视化神器开源!
  9. 官宣:OpenMMLab 重磅升级—百花齐放春满园
  10. 基于OpenCV与Dlib的行人计数开源实现