2010-04-06 161 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