繁体   English   中英

如何防止用户访问管理页面

[英]How to prevent users from accessing admin pages

我想阻止任何其他用户访问管理页面,除非角色是管理员。

即使角色不正确,管理员也可以访问员工页面。

我不知道我的代码有什么问题,为什么它不起作用。

在我所有的 php 代码中,我有一个要求此页面调用“check_login.php”

这是管理页面的 check_login.php 代码

<?php

session_start();
$current_user = $_SESSION['fullname'];

if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {
    $myusername = $_SESSION['username'];

    include '../db_config/connection.php';

    $sql = "SELECT * FROM user_info WHERE ent_id='$myusername' AND role IN ('Admin', 'Manager', 'Supervisor')";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {

        while($row = $result->fetch_assoc()) {
            $current_user_id = $row['user_id'];
        }
    } else {
        header("../?login_err=You must be an Administrator");
    }
    $conn->close();

} else {
    header("location:../?login_err=You must login first");
}

?>

这是员工的 check_login.php 代码

<?php

session_start();
$current_user = $_SESSION['fullname'];
$current_empid = $_SESSION['user_index'];

if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {
    $myusername = $_SESSION['username'];

    include '../db_config/connection.php';

    $sql = "SELECT * FROM user_info WHERE ent_id='$myusername' AND role = 'Employee'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {

        while($row = $result->fetch_assoc()) {
            $current_user_id = $row['user_id'];
        }
    } else {
        header("../build/login.php?login_err=You must be an Employee");
    }
    $conn->close();

} else {
    header("location:../build/login.php?login_err=You must login first");
}
?>

请问有什么帮助吗?

提前致谢。

如果用户无效,则需要在调用header()exit() header()进行重定向。 否则,调用这些脚本的脚本的其余部分仍将运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM