2013-10-05 4 views
1

Я пишу функцию для извлечения captcha, конечно, ей нужно сохранить сеанс. Я использую файл cookie для завивки и использую его для каждого запроса, но он не работает. Когда я просматриваю файл cookie, я вижу, что PHPSESSID менялся каждый раз, когда вызываю функцию. Как я могу это решить?Не удается сохранить идентификатор сеанса через CURL PHP

Вот мой код

<?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; 
} 

ответ

1

Не используйте:

curl_setopt($curl, CURLOPT_COOKIESESSION, true); 

PHPSESSID является куки сессии, и эта опция заставляет каждый cURL вызов, чтобы начать новую сессию, поэтому он игнорирует все файлы сеанса в файле.

+0

Я удалил эту строку, но PHPSESSID все равно меняются каждый раз, когда я вызываю эту функцию :( –

+0

Хорошо, я нашел проблему, то есть я заново создаю файл cookie перед каждым вызовом этой функции. ! –

Смежные вопросы