检测session_destroy /会话结束,将会话登录限制为1

时间:2018-05-09 11:16:22

标签: php session

我在跟踪用户是否登录的列中添加了更新Mysql的代码,以防止同时进行多次登录,并在任何给定时间跟踪管理面板中当前登录的用户数。这似乎不起作用,因为我能够登录多个浏览器选项卡。 (他们似乎都共享相同的会话ID。如果我在一个选项卡上注销,我会在所有其他选项卡上注销)

当我添加下面的代码时,如果我点击任何链接,我就会退出。 (此代码位于我的所有网页上都包含的header.php文件中。您知道为什么会发生这种情况以及如何解决这个问题吗?还有其他方法可以检测会话结束和/或session_destroy吗?有没有?我可以修复这个系统,以防止多次登录或我可以实现这一目标的其他方式? 提前感谢您的反馈。

if(session_destroy()){

$sql="UPDATE login
SET loggedin = '0'
WHERE username='$member_id' "; 

mysqli_query($conn,$sql);
}

作为一个注释,我注意到在logout.php(我的注销脚本)中的barrowed代码中“if(session_destroy())”似乎用于注销并重定向到主页,它确实有用。 (但是,当放置在条件语句中时,我不确定session_destroy()如何执行。以下是代码:

if(session_destroy()) // Destroying All Sessions
{
header("Location: hash.php"); // Redirecting To Home Page
}

1 个答案:

答案 0 :(得分:0)

我最后通过使用“onbeforeunload”并使用ajax将其链接到我的logout.php脚本来解决此问题。在logout.php脚本中,我有一个mysli语句,设置表列loggedin = 0.这样,如果用户忘记注销并关闭选项卡或浏览器,它们将自动注销,mysql表仍将更新为到他们登录状态。