2013-10-05 20 views
1

我正在寫一個函數來獲取驗證碼,當然它需要保持會話。我正在使用cookie文件進行curl並將其用於每個請求,但它不起作用。當我查看cookie文件時,我發現每次調用該函數時都會更改PHPSESSID。我怎麼解決它?無法通過CURL保留會話ID 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是一個會話cookie,而這個選項使得每個cURL調用啓動一個新的會話,因此它會忽略所有會話cookie在文件中。

+0

我已經刪除了這行,但PHPSESSID仍然每次調用這個函數時都會改變:( –

+0

好的,我發現問題,那就是我每次調用這個函數前都會重新創建cookie文件,非常感謝! –