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 相关文章推荐
PHP学习资料汇总与网址
Mar 16 PHP
PHP 数组遍历顺序理解
Sep 09 PHP
php 3行代码的分页算法(求起始页和结束页)
Oct 21 PHP
PHP 面向对象 final类与final方法
May 05 PHP
PHP如何抛出异常处理错误
Mar 02 PHP
php中关于普通表单多文件上传的处理方法
Mar 25 PHP
php 目录与文件处理-郑阿奇(续)
Jul 04 PHP
php删除指定目录的方法
Apr 03 PHP
PHP反射API示例分享
Oct 08 PHP
Zend Framework数据库操作方法实例总结
Dec 11 PHP
PHP封装的完整分页类示例
Aug 21 PHP
PHP反射实际应用示例
Apr 03 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 操作符与控制结构
2012/03/07 PHP
php输入流php://input使用浅析
2014/09/02 PHP
Yii清理缓存的方法
2016/01/06 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
基于jQuery的动态表格插件
2011/03/28 Javascript
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
python 初始化一个定长的数组实例
2019/12/02 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
使用Python将图片转正方形的两种方法实例代码详解
2020/04/29 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
CSS3实现伪类hover离开时平滑过渡效果示例
2017/08/10 HTML / CSS
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
英文简历中的自我评价
2013/10/06 职场文书
女大学生个人求职信
2013/12/09 职场文书
自我介绍演讲稿
2014/01/15 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
Python编程编写完善的命令行工具
2021/09/15 Python