Php 使用cURL登录,并使用cookie返回响应

Php 使用cURL登录,并使用cookie返回响应,php,cookies,curl,autologin,Php,Cookies,Curl,Autologin,我正在尝试编写一个“自动登录”脚本,它使用curl登录到特定站点,然后回显响应,这样用户就可以“绕过”登录。 (例如,授予一次性登录等) 显然,使用以下方法,cookie存储在服务器上,而不是客户机上的cookie.txt中 我尝试过设置$\u COOKIE,但这不起作用,因为自动登录脚本的URL(实际上是子域)和要登录的服务是不同的 登录工作正常。您会看到屏幕,好像您已登录,但单击任何链接都需要您再次登录 有什么想法吗?谢谢 我用于自动登录的代码: <?php $username="em

我正在尝试编写一个“自动登录”脚本,它使用curl登录到特定站点,然后回显响应,这样用户就可以“绕过”登录。 (例如,授予一次性登录等)

显然,使用以下方法,cookie存储在服务器上,而不是客户机上的cookie.txt中

我尝试过设置$\u COOKIE,但这不起作用,因为自动登录脚本的URL(实际上是子域)和要登录的服务是不同的

登录工作正常。您会看到屏幕,好像您已登录,但单击任何链接都需要您再次登录

有什么想法吗?谢谢

我用于自动登录的代码:

<?php
$username="email@domain.com"; 
$password="password"; 
$url="http://sub.domain-to-login.com/index.php/sessions/login"; 
$cookie="cookie.txt"; 

$postdata = "email=".$username."&password=".$password.'&btn_login=Login'; 

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt ($ch, CURLOPT_REFERER, $url); 

curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$result = curl_exec ($ch); 
curl_close($ch);
echo $result;  
?>

我想您需要将所有链接(以$result为单位)替换为,然后使用curl再次下载此站点。
您无法为不同的站点设置cookie。

这是非常糟糕的做法。您将为所有用户使用相同的cookie.txt。实际上,你允许第二,第三,第四,等等。。。用户只需接管第一个用户会话。而且,由于您从未将您获取的登录cookie发送回您的用户,如果他们直接访问服务,他们将不会登录,因为他们从未收到cookie。好的,那么我将在会话中存储一个随机字符串,并相应地将cookie.txt命名。谢谢你的提醒,我还没想到。很糟糕,但这可能是我必须要做的。非常感谢您的快速回复。对于未来的读者:如果你有像我一样复杂的链接,不要忘记在把它们放入查询字符串之前对链接进行url编码。