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 相关文章推荐
Windows中安装Apache2和PHP4权威指南
Nov 18 PHP
php学习之 循环结构实现代码
Jun 09 PHP
PHP 面向对象详解
Sep 13 PHP
2个比较经典的PHP加密解密函数分享
Jul 01 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
PHP内存使用情况如何获取
Oct 10 PHP
如何使用GDB调试PHP程序
Dec 08 PHP
YII动态模型(动态表名)支持分析
Mar 29 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
Laravel框架中自定义模板指令总结
Dec 17 PHP
PHP实现读取文件夹及批量重命名文件操作示例
Apr 15 PHP
PHP常用函数之根据生日计算年龄功能示例
Oct 21 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
2.PHP入门
2006/10/09 PHP
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
php 中文字符串首字母的获取函数分享
2013/11/04 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
2016/03/07 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
学习vue.js计算属性
2016/12/03 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
python操作MySQL数据库的方法分享
2012/05/29 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
详解python配置虚拟环境
2019/04/08 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
Ruby如何创建一个线程
2013/03/10 面试题
工程监理应届生求职信
2013/11/09 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
高校教师个人工作总结2014
2014/12/17 职场文书
高考升学宴答谢词
2015/01/20 职场文书
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
Python天气语音播报小助手
2021/09/25 Python
python多线程方法详解
2022/01/18 Python
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL