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大小写问题:函数名和类名不区分,变量名区分
Jun 17 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
Jun 18 PHP
PHP实现多图片上传类实例
Jul 26 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
Oct 15 PHP
php设置静态内容缓存时间的方法
Dec 01 PHP
php在linux下检测mysql同步状态的方法
Jan 15 PHP
php如何连接sql server
Oct 16 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
Aug 30 PHP
laravel 错误处理,接口错误返回json代码
Oct 25 PHP
PHP 命名空间和自动加载原理与用法实例分析
Apr 29 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
Nov 23 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
phpnow php探针环境检测代码
2014/11/04 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
用javascript实现无刷新更新数据的详细步骤 asp
2006/12/26 Javascript
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
Javascript 解疑
2009/11/11 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
2016/01/05 Javascript
浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
2016/01/19 Javascript
JS限制条件补全问题实例分析
2016/12/16 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
p5.js临摹旋转爱心
2019/10/23 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
Python中查看文件名和文件路径
2017/03/31 Python
Python实现的简单模板引擎功能示例
2017/09/02 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
OpenCV中VideoCapture类的使用详解
2020/02/14 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
2020/03/14 Python
Python+Appium实现自动化测试的使用步骤
2020/03/24 Python
Python常用类型转换实现代码实例
2020/07/28 Python
Python 图片处理库exifread详解
2021/02/25 Python
HTML5实现预览本地图片
2016/02/17 HTML / CSS
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
副董事长岗位职责
2014/04/02 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
工伤私了协议书范本
2014/11/24 职场文书
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
浅谈JavaScript作用域
2021/12/06 Javascript