0

我正在制作一个基于 php 的应用程序。当两个用户从同一浏览器中的不同选项卡登录时,他们可以访问彼此的页面。如何防止这种情况?

4

4 回答 4

0

我看到有4个解决方案:

  1. 您可以尝试为该窗口(在本例中为选项卡)命名以使用 JavaScript 检测特殊窗口:

    if(window.name==4711) {...}
    
  2. 使用带有 GET 参数而不是 cookie 的会话。

  3. 使用具有在该子域上运行的正常 cookie 的随机子域。

  4. 使用一个普通的 cookie,它被限制在一个“虚拟”目录中,使用 mod_rewrite 时该目录并不真正存在。基于此评论的想法

于 2012-06-10T05:29:20.283 回答
0

使用$_SESSION$_COOKIE存储在用户登录和更新数据库时创建的生成密钥,以便当用户更改页面时,您可以根据该生成的密钥访问他们的信息。此外,您可能需要创建一个简单function的检查密钥而不是为您的页面使用另一个功能,如果它像一个菜单栏或登录框,将它包装在一个if statement类似的

if(checkUser($_COOKIE['MYSID'])){
   // User is logged in so show whatever
} else {
   // Login box here
}
于 2012-06-10T05:32:54.097 回答
0

window.name在打开浏览器选项卡时为每个用户使用属性或设置 cookie。

于 2012-06-10T05:47:19.283 回答
0

您的应用程序没有检查用户当前是否已登录,因此当用户输入凭据并登录时您必须首先执行设置会话变量

$_SESSION['logged_in'] = "true";

那么您必须在页面开头对索引页面进行如下修改

<?
if($_SESSION['logged_in']=='true'){
header('location:USERS_SPECIFIC_PAGE_AFTER_LOGIN.EXT')
}
else{
header('location:login_page.ext');
}

?>
于 2012-06-10T06:34:10.793 回答