请教一个PHP CURL的POST提交遇到的问题
这两天在学习搜狐的sendCloud平台,遇到一个问题。
有一个接口:
https://sendcloud.sohu.com/webapi/list.create.json
官方给的文档是这样的:
<br>* 请求接口(建议使用post请求,注意不要使用multipart-post):<br>/list.create<br>* 参数说明:<br>参数 类型 是否必须 说明 描述<br>api_user string 是 请求SC认证账号<br>api_key string 是 请求 SC认证密码<br>addres sstring 是 列表别称地址 例如:[email protected] Developers<br>name string 是 列表名称 不能大于16个中文字<br>description string 否 列表描述 不能大于85个中文字符<br>
于是,我在命令行输入这样:
<br>curl -d "api_user=*&api_key=*&[email protected]&name=demo&description=this is a demo list" https://sendcloud.sohu.com/webapi/list.create.json<br>
提交正确,创建了一个邮件列表。
尝试构造表单提交,同样提交正确
<br> <form method="post" action="https://sendcloud.sohu.com/webapi/list.create.json"><br> <input type="text" name="api_user" value="×" /><br /><br> <input type="text" name="api_key" value="×" /><br /><br> <input type="text" name="address" value="[email protected]" /><br /><br> <input type="text" name="name" value="Abao建立的测试邮件列表" /><br /><br> <input type="text" name="description" value="这是Abao建立的一个测试邮件列表" /><br /><br> <input type="submit" value="submit" /><br> </form><br>
但是,用PHP CURL提交,就出了问题,代码如下:
<br><?php<br> header('Content-Type:text/html;charset=utf-8');<br> $ch = curl_init();<br> curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);<br> curl_setopt($ch, CURLOPT_URL, 'https://sendcloud.sohu.com/webapi/list.create.json');<br> curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);<br> curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);<br> curl_setopt($ch, CURLOPT_AUTOREFERER, 1);<br> curl_setopt($ch, CURLOPT_POST, 1);<br> curl_setopt($ch, CURLOPT_HEADER, 0);<br> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br> $data = array(<br> 'api_user' => '*',<br> 'api_key' => '*',<br> 'address' => [email protected]',<br> 'name' => 'Abao新建的测试邮件列表',<br> 'description' => '这是Abao新建的测试邮件列表',<br> );<br> curl_setopt($ch,CURLOPT_POSTFIELDS,$data);<br> curl_setopt($ch,CURLOPT_POSTFIELDS,$data);<br> if(false === $result=curl_exec($ch)) {<br> echo 'false:<br />';<br> }<br> var_dump(json_decode($result,true));<br> curl_close($ch);<br>这时候总是返回 bad username/password,如果直接在浏览器打开接口的url也是现实bad username/password。
所以我猜测是数据没有提交上去。
百度了说设置curl_setopt($ch,CURLOPT_VERIFYHOST,true),但我一设置就报错
在原版的基础上做了一下修正:增加1st在线支付功能与论坛用户数据结合,vip也可与论坛相关,增加互动性vip会员的全面修正评论没有提交正文的问题特价商品的调用连接问题删掉了2个木马文件去掉了一个后门补了SQL注入补了一个过滤漏洞浮动价不能删除的问题不能够搜索问题收藏时放入购物车时出错点放入购物车弹出2个窗口修正定单不能删除问题VIP出错问题主题添加问题商家注册页导航连接问题添加了导航FLASH源文
立即学习“PHP免费学习笔记(深入)”;
<br>Notice: curl_setopt(): CURLOPT_SSL_VERIFYHOST no longer accepts the value 1, value 2 will be used instead in F:\www\sendCloud\demo.php on line 13<br>
更加奇怪的是用同样的代码,调用/mail.send.json也就是发送邮件的接口,却能够正常提交。
请各位帮忙看看,十分感谢!
------解决思路----------------------
输出curl_error()和curl_errno看看?
------解决思路----------------------
你的表单得到
{"message":"error","errors":["Bad username / password!"]}
你的 php 代码得到
array(2) { ["message"]=> string(5) "error" ["errors"]=> array(1) { [0]=> string(24) "Bad username / password!" } }
你没有给出正确的用户名和口令,自然不能得到正确的结果










