0

ブラウザ ゲーム コミュニティのコミュニティ ページを作成したいと考えています (ブラウザ ゲームは私のものではないため、コードを追加することはできません)。ここで、ユーザーがブラウザ ゲームにログインしているかどうかを自分の Web サイトで確認したいと思います。その場合にのみ、ユーザーはコンテンツを表示できる必要があります。別のドメインに設定された Cookie を読み取ることができないため、これを実現する方法はありますか?

4

2 に答える 2

4

CASのようなものを使用できます。中央認証サーバー。セッションが最初のドメインに設定されていない場合は、次のようになります。

ドメインexample.net:

<?php
session_start();
if(!isset($_SESSION["user"]))
{
    header('Location: http://auth.example.com/?from=example.net');
    die();
}
// Rest of the content!
?>

ドメインの場合auth.example.com:

<?php
session_start();
if(!isset($_SESSION["user"]))
{ ?>
    <!-- form to get login credentials -->
<?php } else {
     if(isset($_GET["from"]) && isset($_SESSION["user"]))
         header('Location: http://example.net/auth.php?authcode=' . yourEncryptFunction($_SESSION["user"]));
} ?>

お役に立てれば!:)

于 2012-07-14T18:53:41.780 に答える
0

両方のドメインを制御する場合は、そうすることができます。単純ですが安全でないアプローチは、JavaScriptを使用して同一生成元ポリシーに違反することです。次のような簡単なスクリプトをブラウザゲームで実行します。

<?php
$info = array(
    'isLoggedIn' => $_SESSION['isLoggedIn'],
    'loggedInAs' => $_SESSION['userName']
    );
echo "gameInfo = ".json_encode($info).";";

コミュニティページで、JavaScriptを使用してログインしているかどうかを確認できます。

<script src="http://gamesite.com/jsGameStatus.php"></script>
<script>
alert(gameInfo.isLoggedIn 
    ? 'Logged In as '+gameInfo.loggedInAs 
    : 'Not logged in');
</script>

繰り返しますが、非常に安全ではありません(誰かがそれらの値をごまかす可能性があります)。より安全なものが必要な場合は、何らかの方法で2つの側面を結び付けることができる必要があります。コミュニティユーザーアカウントは、ゲームアカウントIDが何であるかを知っている必要があります。その後、簡単なものを使用できます。ゲームユーザーがログインしているかどうかを知るためのコミュニティサイトからのリモートコール。

于 2012-07-14T18:56:31.620 に答える