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 相关文章推荐
global.php
Dec 09 PHP
Base64在线编码解码实现代码 演示与下载
Jan 08 PHP
php使用sql server验证连接数据库的方法
Dec 25 PHP
十幅图告诉你什么是PHP引用
Feb 22 PHP
PHP date函数常用时间处理方法
May 11 PHP
php简单复制文件的方法
May 09 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
Laravel框架中缓存的使用方法分析
Sep 06 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 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代码保护--Zend Guard的使用详解
2013/06/03 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
简述Python2与Python3的不同点
2018/01/21 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
Python Selenium库的基本使用教程
2021/01/04 Python
俄罗斯天然和有机产品、健康生活网上商店:Fitomarket.ru
2020/10/09 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
行政人事专员岗位职责
2014/03/05 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
志愿者宣传口号
2014/06/17 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
会计岗位职责
2015/02/03 职场文书
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis