PHP SESSIONS登录时检查用户是否仍在数据库中

时间:2013-04-21 13:11:06

标签: php mysql session

假设名为 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();
    }
}

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

问题:

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

有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

从“用户”表中删除行时,只需删除或使该用户的会话失效。

答案 1 :(得分:0)

Ayush - 你打算如何摧毁别人的会议?

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

相关问题