php中curlpost 时出现的问题解决
文章主要介绍了php curl post 时出现问题的解决方法,需要的朋友可以参考下,就跟随本站小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕业生考试网!
在 中以 POST 方式向 提交数据,但是 下就是无法接收到数据,而 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, '');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
也就是将所要提交的数据以数组的形式通过 POST 发送,而这样就会导致 CURL 使用“错误"的编码“multipart/form-data",其效果相当于我们直接以“<form method="post" action="" enctype="multipart/form-data">"这样的表单来完成操作,大家可以试试,这时的“"是无论如何也无法通过 $_POST 来接收数据的。
所以,正确的做法应该是将上述范例代码中的 $data 由数组变为经 urlencode() 编码后的
【相关阅读】
php的curl实现get和post的代码代码实现:
1、http的get实现
复制代码 代码如下:
$ch = curl_init("") ;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ;
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ;
$output = curl_exec($ch) ;
$fh = fopen("", 'w') ;
fwrite($fh, $output) ;
fclose($fh) ;
2、http的post实现
复制代码 代码如下:
//extract data from the post
extract($_POST) ;
//set POST variables
$url = '' ;
$fields = array(
'lname'=>urlencode($last_name) ,
'fname'=>urlencode($first_name) ,
'title'=>urlencode($title) ,
'company'=>urlencode($institution) ,
'age'=>urlencode($age) ,
'email'=>urlencode($email) ,
'phone'=>urlencode($phone)
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&' ; }
rtrim($fields_string ,'&') ;
//open connection
$ch = curl_init() ;
//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL,$url) ;
curl_setopt($ch, CURLOPT_POST,count($fields)) ;
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string) ;
//execute post
$result = curl_exec($ch) ;
//close connection
curl_close($ch) ;
-
如何实现yii2 数据库读写分离配置
导语:开始使用数据库首先需要配置数据库连接组件,下面小编给大家提供了如何实现yii2数据库读写分离配置,大家可以参考阅读,更多详情请关注应届毕业生考试网。开始使用数据库首先需要配置数据库连接组件,通过添加db组件到应用配置实现("基础的"Web应用是config/),DSN(Da...
-
PHP正则匹配中文字母数字正则的表达式
PHP语言是一门实用性很强的语言,下面小编为大家带来了关于PHP正则匹配中文字母数字正则的'表达式,欢迎大家阅读!PHP正则匹配中文字母数字正则的表达式代码如下if(preg_match("/^d*$/","4312")){echo"全数字";}if(preg_match("/^[a-z]*$/i","fdsFDfd")){echo"全...
-
PHP的漏洞-如何防止PHP漏洞
漏洞无非这么几类,XSS、sql注入、命令执行、上传漏洞、本地包含、远程包含、权限绕过、信息泄露、cookie伪造、CSRF(跨站请求)等。下面是小编为大家带来的关于PHP的漏洞的知识,欢迎阅读。+sql注入其中占大头的自然是XSS与SQL注入,对于框架类型或者有公共文件的,建...
-
PHP中iconv函数知识
iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库。下面是小编为大家搜集整理出来的有关于PHP中iconv函数知识,有需要的小伙伴可以参考下。今天在修改论文在线的时候,遇到了iconv这个函数。学习一下1234header('Content-Type:applicat...