2012-02-02 111 views
0

我正在嘗試使用cURL來自動執行涉及多個步驟的登錄。我遇到的問題是我登錄的第一頁正常,但下一頁我打了我必須選擇或點擊鏈接才能繼續。我怎麼「繼續前進」。我試着拿下一個URL並將其放入我的cURL代碼中,但它不起作用,因爲它直接進入該頁面和錯誤,因爲我沒有進入登錄過程的第一頁。這是我的代碼。cURL遍歷多個頁面的登錄

$ch = curl_init(); 

$data = array('fp_software' => '', 'fp_screen' => '', 'fp_browser' => '','txtUsername' => "$username", 'btnLogin' => 'Log In'); 

curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
curl_setopt($ch, CURLOPT_URL, 'https://www.website.com/Login.aspx'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_exec($ch); 

curl_close ($ch); 

下一個URL是www.website.com/PassMarkFrame.aspx - 基本上,我需要抓取拋出此登錄過程。

我試過這個......但它沒有工作。

curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
curl_setopt($ch, CURLOPT_URL, 'https://www.website.com/Login.aspx'); // use the URL that shows up in your <form action="...url..."> tag 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_exec($ch); 
curl_setopt($ch, CURLOPT_URL, 'https://www.website.com/PassMarkFrame.aspx'); // use the URL that shows up in your <form action="...url..."> tag 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_exec($ch); 
curl_close ($ch); 

這是正確的語法嗎?

回答

3

每個階段後都不要關閉卷曲手柄。如果正在設置cookie,並且您尚未配置cookiejar/cookiefile選項,那麼您將從全新的閃爍清新CURL開始,而不會對先前的請求「記憶」。

保持相同的捲曲手柄進行,並保留網站設置的任何cookie。

+0

上面做了更改,但仍然有相同的結果。我必須允許它存儲Cookie嗎? – 2012-02-02 15:55:34

+1

是的,你需要允許cookies – pduersteler 2012-02-02 15:57:38

+0

感謝您的幫助!它在設置cookie並擺脫curl_close後爲我工作。 – 2012-02-02 16:09:38