2012-03-28 149 views
0

我使用cURL進行了成功的連接,但我試圖下載一個文件,但它不工作。我知道這是cookie,因爲當我打開下載的文件時,它包含授權的必需消息。初始身份驗證正在運行。任何想法php cURL cookie保存爲空

// Create a curl handle to a non-existing location 
$ch = curl_init('https://xxxx/'); 


// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 


// ENABLE HTTP POST 
curl_setopt ($ch, CURLOPT_POST, 1); 

// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD 
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'user=xxx&password=xxx'); 

// IMITATE CLASSIC BROWSER'S BEHAVIOUR : HANDLE COOKIES 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 



curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 

$fp = fopen("status.xml", "w"); 

curl_setopt($ch, CURLOPT_FILE, $fp); 
curl_setopt($ch, CURLOPT_HEADER, 0); 


if(curl_exec($ch) === false) 
{ 
    echo 'Curl error: ' . curl_error($ch); 
} 
else 
{ 
    echo 'Operation completed without any errors'; 
} 


curl_close($ch); 


fclose($fp); 

回答

1

CURLOPT_COOKIEFILE是閱讀餅乾,CURLOPT_COOKIEJAR是寫作。

curl_setopt ($ch, CURLOPT_COOKIEJAR, '/path/to/cookie.txt'); 

請確保您有完整路徑,Cookie文件,並有權寫入

+0

其實我得到它的工作,但奇怪的事情正在發生。下載的文件包含登錄頁面,而不是我想要下載的xml文件。我究竟做錯了什麼。謝謝 – user1019144 2012-03-28 21:50:23

+0

如果有時工作,有時不工作,這意味着它與您試圖獲取數據的服務器有關。我不能說任何話。分析它,看看你丟失了什麼 – safarov 2012-03-28 21:52:37

+0

如果你不使用cookie,你刪除'CURLOPT_COOKIEFILE'行 – safarov 2012-03-28 21:53:47

1

餅乾信息只保存到文件句柄關閉後,喜歡它的說明書上說:

CURLOPT_COOKIEJAR =>將所有內部cookie保存到句柄關閉時的文件名,例如在調用curl_close之後。

Manual: curl_setopt 此外,你可能需要考慮到這一點:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);