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 相关文章推荐
新闻分类录入、显示系统
Oct 09 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
php上传图片之时间戳命名(保存路径)
Aug 15 PHP
PHP 导出Excel示例分享
Aug 18 PHP
php中smarty区域循环的方法
Jun 11 PHP
php添加数据到xml文件的简单例子
Sep 08 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
Sep 29 PHP
php实现微信支付之退款功能
May 30 PHP
laravel 关联关系遍历数组的例子
Oct 10 PHP
laravel 模型查询按照whereIn排序的示例
Oct 16 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
一个程序下载的管理程序(二)
2006/10/09 PHP
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
PHP实现变色验证码实例
2014/01/06 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
js查找节点的方法小结
2015/01/13 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
一览画面点击复选框后获取多个id值的方法
2016/05/30 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
jquery延迟对象解析
2016/10/26 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
微信小程序 选项卡的简单实例
2017/05/24 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
解决layer.confirm选择完之后消息框不消失的问题
2019/09/16 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
python 运算符 供重载参考
2009/06/11 Python
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
python django事务transaction源码分析详解
2017/03/17 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
护士自我鉴定怎么写
2014/02/07 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
水浒传读书笔记
2015/06/25 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书
创业计划书之面包店
2019/09/12 职场文书
Redis如何实现分布式锁
2021/08/23 Redis
Java使用Unsafe类的示例详解
2021/09/25 Java/Android