1

ユーザーがログインを「バイパス」できるように、curlを使用して特定のサイトにログインし、応答をエコーする「自動ログイン」スクリプトを作成しようとしています。(たとえば、ワンタイムログインを許可するなど)

明らかに、次の方法を使用すると、Cookie はクライアントではなくサーバーに cookie.txt に保存されます。

$_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;  
?>
4

1 に答える 1

0

http://sub.domain-to-login.com/index.php/stuffからのすべてのリンク ($result 内) をhttp://mysite.com?url=http:/のようなものに置き換える必要があると思います。 /sub.domain-to-login.com/index.php/stuffを使用してから、curl を使用してこのサイトを再度ダウンロードします。別のサイトに Cookie を設定することはできません。

于 2013-08-23T14:51:38.780 に答える