Curl拒绝清除缓存的会话/cookie。

3

我遇到了一个使用CURL的PHP页面无法清除会话Cookie的问题。代码如下:

    $crl = curl_init();
    $timeout = 5;
    curl_setopt ($crl, CURLOPT_COOKIESESSION, 1);
    curl_setopt ($crl, CURLOPT_FRESH_CONNECT, 1);
    curl_setopt ($crl, CURLOPT_URL,$url);
    curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($crl, CURLOPT_FOLLOWLOCATION, 0);
    curl_setopt ($crl, CURLOPT_COOKIE, "");

    //curl_setopt($crl, CURLOPT_COOKIEFILE, 'cookies.txt');
    curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
    $page = curl_exec($crl);
    curl_close($crl);

从上面的代码中可以看出,我尝试了几个函数来清除会话。我还注释掉了cookie文件。但是,当我启用cookie文件时,脚本仍然使用先前的cookie信息检索页面。

有什么想法吗?谢谢。


你确定curl正在发送一个cookie头吗?你能嗅探$url主机的TCP流量,看看到底发送了什么吗? - Fanis Hatzidakis
我不确定,但那是唯一与CURL相关的代码,而且cookie文件肯定已经被注释掉了。不确定如何继续嗅探TCP流量,但这听起来像是一个很好的测试方法。 - Jon
你为什么要给这个打上CodeIgniter的标签? - John Bellone
1个回答

2
尝试向您的$url变量添加时间戳:$url . '?t=' . time()。
我通常尝试使用cookiejar来实现此功能,并始终尝试设置两个选项:
curl_setopt($crl, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt($crl, CURLOPT_COOKIEJAR, 'cookies.txt');

当你启用此功能时,cookies.txt文件是否可写?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接