【问题标题】:Can we have two different session name for normal user and admin user?我们可以为普通用户和管理员用户设置两个不同的会话名称吗?
【发布时间】:2019-01-02 08:02:08
【问题描述】:

这是给普通用户的。

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


【解决方案1】:

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

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"
}

【讨论】:

    猜你喜欢
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多