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 保留小数点
Apr 21 PHP
PHP 无限分类三种方式 非函数的递归调用!
Aug 26 PHP
PHPExcel内存泄漏问题解决方法
Jan 23 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
Oct 22 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 PHP
PHP 文件上传后端处理实用技巧方法
Jan 06 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
php微信开发之谷歌测距
Jun 14 PHP
PHP的curl函数的用法总结
Feb 14 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
Apr 09 PHP
Laravel 自定命令以及生成文件的例子
Oct 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
浅谈PHP中JSON数据操作
2015/07/01 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
2017/05/10 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
使用grappelli为django admin后台添加模板
2014/11/18 Python
Python中join和split用法实例
2015/04/14 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
python如何统计代码运行的时长
2019/07/24 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
python操作链表的示例代码
2020/09/27 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
手术室护士自我鉴定
2013/10/14 职场文书
医药销售自我评价200字
2014/09/11 职场文书
2015大一新生军训感言
2015/08/01 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
一级电子管军用接收机测评
2022/04/05 无线电
MyBatis配置文件解析与MyBatis实例演示
2022/04/07 Java/Android
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技