我想建立一个浏览器游戏社区的社区页面(浏览器游戏不是我的,所以我不能添加任何代码)。现在我想在我的网站上检查用户是否登录到浏览器游戏中。只有在这种情况下,用户才能看到内容。既然您不能读取设置在另一个域上的cookie,有没有可能实现这一点?
发布于 2012-07-15 02:53:42
你可以使用像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-15 02:56:32
如果您同时控制两个域,则可以这样做。一种简单但不安全的方法是使用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>再说一次,并不是超级安全(有人可以伪造这些值)。如果您想要更安全的东西,您需要能够以某种方式将两者联系在一起-您的社区用户帐户将必须知道他们的游戏帐户in是什么,然后您可以从社区站点使用一个简单的远程调用来了解游戏用户是否已登录。
https://stackoverflow.com/questions/11486413
复制相似问题