我想寫一個「自動登錄」腳本,它使用curl登錄到特定站點,然後回顯響應,以便用戶可以「繞過」登錄。 (例如,授予一次性登錄等)使用cURL和迴應響應與cookie登錄
顯然,使用以下方法,cookie存儲在服務器上,而不是客戶端上的cookie.txt中。
我試過設置$ _COOKIE,但這樣做不起作用,因爲自動登錄腳本和要登錄的服務的URL(實際上是子域)是不同的。
登錄工作正常。您看到屏幕就像您已經登錄一樣,但點擊任何鏈接都需要您再次登錄。
任何想法?由於
我用自動登錄的代碼:
<?php
$username="[email protected]";
$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;
?>
這是非常糟糕的做法。您將爲所有用戶使用** SAME ** cookie.txt。實際上,您允許第2,3,4等...用戶簡單地接管第1個用戶的會話。因爲你永遠不會發送登錄cookie,所以你已經提交給你的用戶,如果他們直接打到服務,他們將不會登錄,因爲他們從未收到cookie。 –
好的,然後我會在會話中存儲一個隨機字符串並相應地命名cookie.txt。感謝你們,我沒有想到這一點。 – nic