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
file_get_contents('php://input') 和POST的区别相关推荐
- php input 只接收文件内容,一文搞懂$_POST和file_get_contents(“php://input”)的区别
今天来说一说 $_POST.file_get_contents("php://input")和$GLOBALS['HTTP_RAW_POST_DATA']的区别,这三个方法都是用来 ...
- file_get_contents(php://input)的使用方法
$data = file_get_contents("php://input"); php://input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最 ...
- HTML button 和 input type=“button”的区别 / input type=submit 和button的区别
HTML <button> 和 input type="button"的区别: 1. <button>标签里可以放文本图片等内容,与<input> ...
- 【转】file_get_contents(php://input)的使用方法
$data = file_get_contents("php://input"); php://input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最 ...
- file_get_contents(php://input)
$data = file_get_contents("php://input"); php://input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最好使用 ...
- html input change,input与change事件区别
input与change事件区别属于前端实例代码,有关更多实例代码大家可以查看. 关于标题中两个事件的具体用法可以参阅如下两篇文章: (1).input事件参阅JavaScript input 事件一 ...
- python中str和input_python中input()与raw_input()的区别分析
使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的 纯数字输入 当输入为纯数字时 input返回的是数值类型,如int,float ra ...
- python屏幕的交互(读取输出信息)input,raw_input的区别
>>> input("your name?") your name?sam Traceback (most recent call last): File & ...
- python命令行输入函数回退_Python2 中 input() 和 raw_input() 的区别
在 Python2 中如要想要获得用户从命令行的输入,可以使用 input() 和 raw_input() 两个函数,那么这两者有什么区别呢? 我们先借助 help 函数来看下两者的文档注释: > ...
最新文章
- 分享两篇Google Map API的介绍
- Go 语言 Excel
- Linux 常用命令与设置
- android 马甲包 app,寻 实力android马甲包上架技术
- 10 Redis 主从复制
- PHP内核探索之变量(1)Zval(自己看过不错儿)
- 个人阅读 代码大全的阅读与提问
- 关于Ad-hoc测试的基本知识
- linux cache fs,新闻|Linux 上将出现一个新的文件系统:bcachefs
- c++中运算符重载(加号运算,左移运算,前置后置++运算符,赋值运算,关系运算,函数运算)
- Python程序从给定的N个数字中找到最大倍数
- HDU 5610 Baby Ming and Weight lifting
- 怎么学计算机制作ppt教程,ppt 制作教程步骤(新手电脑制作 ppt 详细步骤)
- CHIP-seq流程学习笔记(11)-使用GSEA软件进行GSEA分析
- 微信小程序踩坑——项目内文件夹删除不掉
- R语言可视化回归模型的残差直方图并进行残差分析(Histogram of Residuals)
- 热点综述 | 纵向微生物组研究的统计方法总结
- VS 2022 中英文切换
- 克里斯·麦克切斯尼《高效能人士的执行4原则》读书笔记
- jquery 删除数组