2012-11-27 18 views
0

你好 我wonna使用curl_multi_init(),先用curl_multi_init登錄到一個網站,並抓住該cookie,然後在接下來的現場使用,還是()。運行curl_multi_init()和重複使用的cookie

我一直在爲此搜索並試用了許多不同的東西。我現在得到了這個代碼,但它沒有第二次使用cookie。

curl_setopt($login, CURLOPT_HEADER, 0); 
curl_setopt($login, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($login, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1284.0 Safari/537.13"); 
curl_setopt($login, CURLOPT_TIMEOUT, 60); 
curl_setopt($login, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($login, CURLOPT_COOKIEJAR, $cookieFile); 
curl_setopt($login, CURLOPT_COOKIEFILE, $cookieFile); 
curl_setopt($login, CURLOPT_REFERER, $loginURL); 
curl_setopt ($login, CURLOPT_POSTFIELDS, $postData); 
curl_setopt ($login, CURLOPT_POST, 1); 



curl_setopt($getByDate, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($getByDate, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1284.0 Safari/537.13"); 
curl_setopt($getByDate, CURLOPT_TIMEOUT, 60); 
curl_setopt($getByDate, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt($getByDate, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($getByDate, CURLOPT_BINARYTRANSFER, true); 
curl_setopt($getByDate, CURLOPT_COOKIEJAR, $cookieFile); 
curl_setopt($getByDate, CURLOPT_COOKIEFILE, $cookieFile); 
curl_setopt($getByDate, CURLOPT_REFERER, "https://www.elevplan.dk/Moduler/Elevforside/Elevforside.aspx"); 


//create the multiple cURL handle 
$mh = curl_multi_init(); 

//add the two handles 
curl_multi_add_handle($mh,$login); 
curl_multi_add_handle($mh,$getByDate); 

$running = null; 
    do { 
     curl_multi_exec($mh, $running); 
    } while ($running); 

回答

2

您必須使用同步請求,因爲您要按特定順序執行請求。 cURL multi會導致它在相同的時間下載兩個頁面(或者第二個請求在第一個請求之前完成)。 第一個請求完成後,必須執行第二個請求。