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中使用Oracle数据库(2)
Oct 09 PHP
默默小谈PHP&amp;MYSQL分页原理及实现
Jan 02 PHP
PHP 检查扩展库或函数是否可用的代码
Apr 06 PHP
破解图片防盗链的代码(asp/php)测试通过
Jul 02 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
为PHP5.4开启Zend OPCode缓存
Dec 26 PHP
php和editplus正则表达式去除空白行
Apr 17 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
Sep 22 PHP
php原生数据库分页的代码实例
Feb 18 PHP
PHP7 安装event扩展的实现方法
Oct 08 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实现用户认证及管理完全源码
2007/03/11 PHP
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
php记录日志的实现代码
2011/08/08 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
js function使用心得
2010/05/10 Javascript
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
引用外部js乱码问题分析及解决方案
2013/04/12 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
python/sympy求解矩阵方程的方法
2018/11/08 Python
python实现汽车管理系统
2018/11/30 Python
简述python Scrapy框架
2020/08/17 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
介绍一下SQL Server的全文索引
2013/08/15 面试题
高中毕业自我鉴定
2013/12/19 职场文书
小学生环保演讲稿
2014/04/25 职场文书
临床医学专业求职信
2014/08/08 职场文书
高中军训的心得体会
2014/09/01 职场文书
水电施工员岗位职责
2015/04/11 职场文书
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL