在同一浏览器中限制用户访问


Restrict User Access in same browser

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

我看到有 4 种解决方案:

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

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

  3. 使用随机子域和在该子域上运行的普通 Cookie。

  4. 使用普通的cookie,该cookie仅限于"虚拟"目录,该目录在使用mod_rewrite时并不真正存在。基于此评论的想法。

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

if(checkUser($_COOKIE['MYSID'])){
   // User is logged in so show whatever
} else {
   // Login box here
}

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

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

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

然后,您必须对索引页面进行一些修改,如下所示

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