2011-02-04 2 views
2

У меня возникают проблемы с страницей PHP с использованием CURL, не очищающего файлы cookie сеансов. Код выглядит следующим образом:Curl отказывается очищать кешированную сессию/файлы 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.

Любые идеи? Спасибо.

+0

Вы уверены, что curl отправляет заголовок файла cookie? Можете ли вы обнюхать трафик TCP на хост $ url, чтобы узнать, что именно отправляется? – Fanis

+0

Я не уверен, но это единственный код, связанный с CURL, и файл cookie определенно прокомментирован. Не уверен, как продолжать обнюхивать трафик TCP, хотя это звучит как хороший способ проверить это. – Jon

+0

Почему вы отметили это с помощью CodeIgniter? –

ответ

1

Попробуйте добавить временную метку к переменной $ url: $ url. '? t ='. время().

Я обычно стараюсь использовать cookiejar для этого, и что я всегда пытаюсь установить оба варианта:

curl_setopt($crl, CURLOPT_COOKIEFILE, 'cookies.txt'); 
curl_setopt($crl, CURLOPT_COOKIEJAR, 'cookies.txt'); 

При включении этого, является cookies.txt записываемые?