php curl post 时出现的问题解决


Posted in PHP onJanuary 30, 2014

在 a.php 中以 POST 方式向 b.php 提交数据,但是 b.php 下就是无法接收到数据,而 CURL 操作又显示成功,非常诡异。原来,“传递一个数组到CURLOPT_POSTFIELDS,cURL会把数据编码成 multipart/form-data,而然传递一个URL-encoded字符串时,数据会被编码成 application/x-www-form-urlencoded。
",而和我一样对 CURL 不太熟悉的人在编写程序时,代码往往是下面的样子:

$data = array( 'Title' => $title, 'Content' => $content, 'ComeFrom' => $comefrom ); 
curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, false); 
curl_setopt($ch, CURLOPT_URL, 'http://example.com/b.php'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_exec($ch);

也就是将所要提交的数据以数组的形式通过 POST 发送,而这样就会导致 CURL 使用“错误"的编码“multipart/form-data",其效果相当于我们直接以“<form method="post" action="b.php" enctype="multipart/form-data">"这样的表单来完成操作,大家可以试试,这时的“b.php"是无论如何也无法通过 $_POST 来接收数据的。

所以,正确的做法应该是将上述范例代码中的 $data 由数组变为经 urlencode() 编码后的

PHP 相关文章推荐
BBS(php &amp; mysql)完整版(二)
Oct 09 PHP
php $_ENV为空的原因分析
Jun 01 PHP
php 正则表达式小结
Aug 31 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
Aug 11 PHP
php常用Stream函数集介绍
Jun 24 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
Apr 20 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
php通过排列组合实现1到9数字相加都等于20的方法
Aug 03 PHP
PHP文件缓存smarty模板应用实例分析
Feb 26 PHP
Zend Framework教程之Application用法实例详解
Mar 14 PHP
php常用字符函数实例小结
Dec 29 PHP
vmware linux系统安装最新的php7图解
Apr 14 PHP
分享下页面关键字抓取components.arrow.com站点代码
Jan 30 #PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
Jan 30 #PHP
php内核解析:PHP中的哈希表
Jan 30 #PHP
php缓冲 output_buffering和ob_start使用介绍
Jan 30 #PHP
PHP内核探索:变量概述
Jan 30 #PHP
PHP内核探索:变量存储与类型使用说明
Jan 30 #PHP
PHP $_FILES中error返回值详解
Jan 30 #PHP
You might like
使用PHP计算两个路径的相对路径
2013/06/14 PHP
PHP QRCODE生成彩色二维码的方法
2016/05/19 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
php实现文件上传基本验证
2020/03/04 PHP
理解Javascript_13_执行模型详解
2010/10/20 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
Python实现的密码强度检测器示例
2017/08/23 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
ORACLE第二个十问
2013/12/14 面试题
商得四方公司面试题(gid+)
2014/04/30 面试题
酒店管理专业毕业生推荐信
2013/11/10 职场文书
护理专业应届毕业生推荐信
2013/11/15 职场文书
儿子婚宴答谢词
2014/01/09 职场文书
个人授权委托书范本
2014/04/03 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
2016年国培研修日志
2015/11/13 职场文书
总结Python变量的相关知识
2021/06/28 Python
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python