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编写的导航条程序
Oct 09 PHP
global.php
Dec 09 PHP
php 静态页面中显示动态内容
Aug 14 PHP
php 读取shell管道传输过来的内容
Mar 01 PHP
PHP 开发环境配置(测试开发环境)
Apr 28 PHP
浅析Apache中RewriteCond规则参数的详细介绍
Jun 30 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
关于php几种字符串连接的效率比较(详解)
Feb 22 PHP
PHP代码重构方法漫谈
Apr 17 PHP
PHPUnit + Laravel单元测试常用技能
Nov 06 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循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
php和html的区别点详细总结
2019/09/24 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
为指定元素增加样式的js代码
2009/12/09 Javascript
javascript中万恶的function实例分析
2011/05/25 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
Vue组件化开发思考
2018/02/02 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
解决vue-router 嵌套路由没反应的问题
2020/09/22 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
玩转python爬虫之正则表达式
2016/02/17 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
生物化工专业个人自荐信
2013/09/26 职场文书
智能电子应届生求职信
2013/11/10 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
廉洁自律个人总结
2015/02/14 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
北京青年观后感
2015/06/15 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
Ruby处理CSV数据方法详解
2022/04/18 Ruby