首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用cURL php Cookie登录

使用cURL php Cookie登录
EN

Stack Overflow用户
提问于 2017-09-07 00:58:34
回答 1查看 805关注 0票数 0

我需要帮助才能像图像中显示的那样进行登录。(www.hurl.it)

这应该在PHP中用cURL来完成。这是我到目前为止所拥有的,但它对我不起作用:

代码语言:javascript
复制
$c = curl_init('https://www.mkr.cl/users/login?redirect=/store/product/22207');
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_AUTOREFERER, 1 );
curl_setopt($c, CURLOPT_HEADER, 1);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($c, CURLOPT_POST,true);
curl_setopt($c, CURLOPT_POSTFIELDS, 'username=76696459-1&password=7669');
curl_setopt($c, CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($c, CURLOPT_COOKIEFILE, 'cookies.txt');
$result = curl_exec($c);
curl_close($c);
print_r($result);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-07 18:23:42

当我在这里测试你的代码时,你的代码工作正常,并且确实登录了。我投票结束这个问题,因为你只是说“它对我不起作用”,而没有解释它如何对你不起作用。

但是,在调试时,不要使用print_r,而要使用var_dump。例如,如果curl得到一个错误,它将返回 bool(false) ,而当您将bool(False)提供给print_r时,它将完全不打印任何内容,也不会给您任何线索。

但是,如果您将bool(false)提供给var_dump,它实际上将打印bool(false)。

此外,当专门调试curl代码时,启用CURLOPT_VERBOSE,它会打印许多有用的调试信息。当curl_exec返回false时,您应该使用curl_error()来提取错误消息。

简而言之,将$result = curl_exec($c);替换为:

代码语言:javascript
复制
curl_setopt($c,CURLOPT_VERBOSE,true);
$result = curl_exec($c);
if(false===$result){
throw new \RuntimeException('curl_exec failed! errno: '.curl_errno($c).'. error: '.curl_error($c));
}
var_dump($result);

此外,如果在设置任何curl选项时出现问题,curl_setopt会返回bool(false),您在这里也完全忽略它,请不要这样做!使用像这样的东西:

代码语言:javascript
复制
function ecurl_setopt ( /*resource*/$ch , int $option , /*mixed*/ $value ):bool{
    $ret=curl_setopt($ch,$option,$value);
    if($ret!==true){
        //option should be obvious by stack trace
        throw new RuntimeException ( 'curl_setopt() failed. curl_errno: ' .  curl_errno ($ch).'. curl_error: '.curl_error($ch) );
    }
    return true;
}

现在,如果应用设置时出现问题,将抛出异常,而不是默默忽略setopt错误。无论如何,应用CURLOPT_VERBOSE,不要忽略setopt返回值,使用var_dump而不是print_r,如果它仍然不起作用,打印详细日志,以及CURLOPT_VERBOSEvar_dumpcurl_error打印的任何内容,然后我将收回我的接近投票。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46080690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档