2011-11-13 46 views
1

我有一個簡單的功能我用用就用捲曲和PHP 這是函數遠程登錄到其他網站做銷燬CURL登錄功能所做的cookies?

public function Curllogin($url,$data,$proxy,$proxystatus) 
    { 
     $login = curl_init(); 
     curl_setopt($login, CURLOPT_COOKIEJAR,$this->SetCookieFile); 
     curl_setopt($login, CURLOPT_COOKIEFILE,$this->SetCookieFile); 
     curl_setopt($login, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
     curl_setopt($login, CURLOPT_TIMEOUT, 40); 
     curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE); 
     if ($proxystatus == 'on') { 
      curl_setopt($login, CURLOPT_SSL_VERIFYHOST, FALSE); 
      curl_setopt($login, CURLOPT_HTTPPROXYTUNNEL, TRUE); 
      curl_setopt($login, CURLOPT_PROXY, $proxy); 
     } 
     curl_setopt($login, CURLOPT_URL, $url); 
     curl_setopt($login, CURLOPT_HEADER, TRUE); 
     curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
     curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE); 
     curl_setopt($login, CURLOPT_POST, TRUE); 
     curl_setopt($login, CURLOPT_POSTFIELDS, $data); 
     ob_start(); // prevent any output 
     return curl_exec ($login); // execute the curl command 
     ob_end_clean(); // stop preventing output 
     curl_close ($login); 
     unset($login); 
    } 

它沒有問題的工作登陸 但有一個小問題,我發現 讓我們說im登錄到example.com並通過$ data變量 中的用戶名和密碼它將登錄沒有問題 但當更改使用另一個用戶名和密碼的$數據值時,它使用舊的用戶名和密碼登錄用於上次登錄 忽略新的登錄信息 我試過e非常類似於刪除cookies.txt文件並讓腳本重新創建它 我甚至試圖清除瀏覽器緩存的Cookie ,但它不會將其更改爲每次使用第一個用戶名和密碼時使用新數據 我用於登錄 是否有任何功能來銷燬由CURL所做的cookie或我錯過了什麼?

回答

0

只需將您的$this->SetCookieFile更改爲空文件,可能是臨時目錄中的隨機文件。您的「真實」瀏覽器的cookies與此無關,cURL正在獨立管理cookie。

+0

沒有找到你嗎? – Marco

+0

你的意思是我創建另一個函數設置$ this-> SetCookieFile爲null,並在每次用於註銷時調用此函數? – Marco

+0

'CURLOPT_COOKIEJAR' /'CURLOPT_COOKIEFILE'是一個文件,其中cURL存儲任何接收到的cookie,並根據需要從cookies中返回任何請求。清理瀏覽器Cookie的類比是清空該文件。 – deceze