【问题标题】:Can't keep session ID via CURL PHP无法通过 CURL PHP 保留会话 ID
【发布时间】:2013-10-05 06:37:34
【问题描述】:

我正在编写一个函数来获取验证码,当然它需要保持会话。我将 cookie 文件用于 curl 并将其用于每个请求,但它不起作用。当我查看 cookie 文件时,我看到每次调用该函数时 PHPSESSID 都发生了变化。我该如何解决?

这是我的代码

<?php    
function fetch_captcha($url, $cookie_file = false, $user_agent = DEFAULT_USER_AGENT, $timeout = 10) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_VERBOSE, true);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

    if ($cookie_file) {
        curl_setopt($curl, CURLOPT_COOKIESESSION, true);
        curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file);
        curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
    }
    curl_setopt($curl, CURLOPT_USERAGENT, $user_agent);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);

    $response = curl_exec($curl);
    curl_close($curl);
    return $response;
}

【问题讨论】:

    标签: php cookies curl


    【解决方案1】:

    不要使用:

    curl_setopt($curl, CURLOPT_COOKIESESSION, true);
    

    PHPSESSID 是一个会话 cookie,此选项会导致每个 cURL 调用启动一个新会话,因此它会忽略文件中的所有会话 cookie。

    【讨论】:

    • 我已经删除了这一行,但是每次调用这个函数时 PHPSESSID 仍然会改变:(
    • 好的,我发现了问题,就是每次调用这个函数之前我都重新创建了cookie文件。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 2014-03-24
    • 2018-07-11
    • 2017-10-22
    • 1970-01-01
    相关资源
    最近更新 更多