1

假设名为Michael的用户已注册,并且在我们的数据库中名为users的表中。

Michael 浏览了我的网站,当他这样做时,我从表中删除了他的用户。我的登录系统适用于会话。

从数据库中删除用户 Michael 后,浏览器可以使用“Michael”浏览网站,直到会话结束。

那是因为在会话处理之后,除非您每次都检查,否则它不会改变。

由于查询/请求过多,我的解决方案可能会增加巨大的引擎负载:

在 session.inc.php 添加一个检查器:

if (isset($_SESSION['user']))
{
    $check = $pdo->prepare("SELECT * FROM users WHERE user_name = :user")
    $check->execute(array( ":user" => $_SESSION['user']));

    if (!$check->rowCount())
    {
        session_destroy();
    }
}

它将检查是否存在与他当前使用会话登录的用户名完全相同的行,如果没有,它将破坏会话。

问题:

如果我的网站有很多浏览用户,该解决方案会导致引擎负载过大吗?

有没有更好的方法来做到这一点?

4

2 回答 2

3

当您从“用户”表中删除一行时,只需删除或过期该用户的会话。

于 2013-04-21T13:15:47.530 回答
0

Ayush - 你打算如何破坏别人的会话?

user1761494 - 最好的方法是将会话保存在数据库中,这不仅可以增加您网站的安全性,还可以让您完全控制会话。当您将用户踢出(删除/禁止)时,只需删除该用户的会话记录即可。

于 2013-04-21T14:54:00.133 回答