通过curl登录然后打开登录的页面

时间:2010-04-06 15:33:08

标签: php cookies curl header

我正在尝试使用以下代码将发布数据发送到登录表单,然后以登录用户的身份在浏览器中重新加载该页面。不知怎的,它没有保存cookie,并重新使用它作为header()函数,可以通过在发送登录详细信息后再次调用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();

2 个答案:

答案 0 :(得分:3)

您可以使用cURL登录。并使用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 :(得分:1)

那是不可能的 并且看起来像网络钓鱼 让用户登录。