首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >正在尝试验证仪表板中的用户角色

正在尝试验证仪表板中的用户角色
EN

Stack Overflow用户
提问于 2019-01-14 07:57:03
回答 1查看 191关注 0票数 0

我正在尝试创建一个登录系统,该系统检查用户角色并重定向到相应的仪表板,同时还禁止用户手动输入他人的仪表板URL。

登录运行得很好,但是用户角色的检查就不是那么好了。

该站点的每个角色都有一个仪表板,每个仪表板的顶部是:

session_start(); 
if(!$_SESSION['sess_role'] == 'role1') {
    header('location:../../index.php');
}

当您还没有登录时,它似乎可以工作,因为'sess_role‘属性不匹配,所以它会正确地返回到索引页面,但是一旦我以任何用户登录,我就能够通过手动输入URL进入每个仪表板,尽管没有正确的“角色”。

以下是登录码:

$msg = ""; 
if(isset($_POST['submitBtnLogin'])) {
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
    if($username != "" && $password != "") {
        try {
            $query = "select * from `users` where `username`=:username and `password`=:password";
            $stmt = $db->prepare($query);
            $stmt->bindParam('username', $username, PDO::PARAM_STR);
            $stmt->bindValue('password', $password, PDO::PARAM_STR);
            $stmt->execute();
            $count = $stmt->rowCount();
            $row   = $stmt->fetch(PDO::FETCH_ASSOC);
            if($count == 1 && !empty($row)) {

                $_SESSION['sess_user_id']   = $row['id'];
                $_SESSION['sess_username'] = $row['username'];
                $_SESSION['sess_role'] = $row['role'];
            }

                if($row['role'] == "role1") {
                header('location:modules/role1/index.php');
                } else if($row['role'] == "role2") {
                header('location:modules/role2/index.php');
                } else if($row['role'] == "role3") {
                header('location:modules/role3/index.php');
                } else if($row['role'] == "role4") {
                header('location:modules/role4/index.php');

            } else {
                $msg = "Invalid login information.";
            }
        } catch (PDOException $e) {
            echo "Error : ".$e->getMessage();
        }
    } else {
        $msg = "Both fields are required.";
    }
}

我试着这样做:

echo($_SESSION['sess_role']);

要查看输出是什么,它似乎可以正常工作,当我使用"role1“帐户时显示"role1”,其他角色也是如此。

例如,当访问"role2“仪表板时,输出仍然是"role1”,但我仍然能够输入。

我非常感谢在识别这个问题上的一些帮助。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54174320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档