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 相关文章推荐
解析array splice的移除数组中指定键的值,返回一个新的数组
Jul 02 PHP
php封装的连接Mysql类及用法分析
Dec 10 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 PHP
Laravel实现自定义错误输出内容的方法
Oct 10 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
Dec 05 PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 PHP
PHP注释语法规范与命名规范详解篇
Jan 21 PHP
PHP设计模式之模板方法模式定义与用法详解
Apr 02 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
PHP信号处理机制的操作代码讲解
Apr 19 PHP
设定php简写功能的方法
Nov 28 PHP
php优化查询foreach代码实例讲解
Mar 24 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
PHP简单的MVC框架实现方法
2015/12/01 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
JS与SQL方式随机生成高强度密码示例
2018/12/29 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
Python3实现从文件中读取指定行的方法
2015/05/22 Python
Python线程详解
2015/06/24 Python
解决Python传递中文参数的问题
2015/08/04 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
详解Django之auth模块(用户认证)
2018/04/17 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
Python中格式化字符串的四种实现
2020/05/26 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
新锐科技Java程序员面试题
2016/07/25 面试题
李开复演讲稿
2014/05/24 职场文书
新品发布会策划方案
2014/06/08 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
产品质量保证书范本
2015/02/27 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书