2010-04-06 108 views
1

我試圖將以下代碼發送到登錄表單,然後在瀏覽器中以登錄用戶身份重新加載該頁面。不知何故,它不保存cookie,並重新使用它的頭()函數,可以通過發送登錄細節後再次調用curl來完成與頭相同的事情?通過curl登錄,然後打開該頁面登錄



.. 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST , false); 
curl_setopt($ch, CURLOPT_USERAGENT, $defined_vars['HTTP_USER_AGENT']); 
//curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); 
curl_setopt($ch, CURLOPT_MAXREDIRS, 1); 

// Apply the XML to our curl call 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 

$data = curl_exec($ch); 

setcookie($cookie); 
header('location: ' . $url); 

die(); 

+1

這是爲同一個域?如果不是那麼它不可能。如果是的話,我就是不明白。此外,沒有理由死在最後。 – zaf 2010-04-06 18:16:09

回答

3

您可以使用cURL登錄。並做任何你必須做的使用捲曲。 我不確定您是否可以恢復此Cookie並將其重複使用以供進一步使用。 您可以在cURL中傳遞字符串作爲cookie的標識符。我不確定您是否可以使用它將Cookie加載到其他地方......也許,也許不是。但是,下面的代碼工作得很好。至少爲了我需要的東西。

好運。

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL , "http://www.example.com/login.php"); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "login=" . $login . "&password=" . $password . "&submit=submit"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies"); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies"); 
$response= curl_exec ($ch); 
curl_close($ch); 

不要忘記你必須使用你打算在這一領域進行的所有其他操作相同的cookie鍵..

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL , "http://www.example.com/datapageyouneed.php"); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies"); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies"); 
$reponse= curl_exec ($ch); 
curl_close($ch); 
1

這是不可能的
,看上去就像釣魚。
讓用戶登錄自己。

+3

你幾乎得到了Haiku,但它是5-7-5,而不是5-5-7。 – 2010-04-06 16:13:22

+0

我應該可以用javascript來做到這一點。 – 2010-04-07 08:16:54