首页 > 解决方案 > 我们可以为普通用户和管理员用户设置两个不同的会话名称吗?

问题描述

这是针对普通用户的。

if($pass) {
            /*password is correct*/
            session_start();
            $_SESSION['username'] = $username;
}

我有不同的管理员登录页面,这行得通吗?

if($pass) {
            /*password is correct*/
            session_start();
            $_SESSION['admin_username'] = $username;
}

有一个普通的仪表板和管理仪表板。因此,如果会话是 admin_username,那么用户应该被重定向到管理仪表板,如果会话是用户名,那么用户应该被引导到普通仪表板。这种方法容易出现任何错误或冲突吗?

我也可以有一个会话名称检查会话是否不为空,如果 $_SESSION['username'] 等于管理员的用户名,则重定向到管理员仪表板,否则为普通用户。

哪种方法更好?

标签: php

解决方案


我建议您将用户名与角色分开。您可以使用管理指示器添加单独的会话参数

if($pass) {
    /*password is correct*/
    session_start();
    $_SESSION['username'] = $username;
    $_SESSION['isAdmin'] = true;
}

但是您应该记住,当您想要添加第三个角色时,您应该将角色保存在会话中。

if($pass) {
    /*password is correct*/
    session_start();
    $_SESSION['username'] = $username;
    $_SESSION['role'] = "Admin"; // Or "Moderator" or  "User"
}

推荐阅读