我是靠谱客的博主 外向斑马,最近开发中收集的这篇文章主要介绍curl post 日志_Curl 发送@开头的字符串问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

查看日志发现,偶尔有的用户注册失败,这个频率非常低,低到顶多一个月一次发现这种现象。

自己反复测试会员注册流程,没有任何问题,也就不了了之了。

但有一天某个会员非常执着,留下了很多(几十个)注册失败日志。

这使我断定,肯定不是网络异常之类的。

我仔细记录他的提交数据,完全复制一份由我这边再提交,果然。。。失败。

失败原因是 这个人的密码是@开头的。

curl传送post数据的时候如果第一个字符串为"@",则会被当做上传文件来处理。

如下:

$data = array('file1'=>'@filepath','file2'=>'@filepath');

curl_setopt($curl, CURLOPT_POSTFIELDS,$data);

那如果需要传递@开头的字符串呢?

如果php版本是5.5以上,可以用CURLOPT_SAFE_UPLOAD选项解决这个问题。

如果低于5.5呢?

curl的post数据可以是数组形式,也可以是字符串形式,

如下:

// 数组形式

$data = array('key1'=>'@abc','key2'=>'@efg');

curl_setopt($curl, CURLOPT_POSTFIELDS,$data); // 失败

//拼接成一个字符串

$data = array('key1'=>'@abc','key2'=>'@efg');

$data_string = http_build_query($data);

curl_setopt($curl, CURLOPT_POSTFIELDS,$data_string); // 正常

所以如果提交的数据里没有文件,那可以使用拼接方式避免这个问题。

最后

以上就是外向斑马为你收集整理的curl post 日志_Curl 发送@开头的字符串问题的全部内容,希望文章能够帮你解决curl post 日志_Curl 发送@开头的字符串问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部