Ограничьте страницу только для администратора

#php #redirect #admin #roles

Вопрос:

Я перенаправил лиц, не являющихся администраторами, которые пытаются получить доступ к сотруднику.php для user.php Однако роль администратора также перенаправляется на user.php. Примечание: $_SESSION[‘ИДЕНТИФИКАТОР’] был создан на странице входа в систему для установки разрешения. Существует 2 типа ролей: администратор и пользователь.

         <?php

        if(!isset($_SESSION['ID']) amp;amp;( $_SESSION['ROLE'] != 'admin') )
        {
            header("Location:user.php"); //Do not allow him to access.
            exit;
        }

         session_start();
        if(!$_SESSION['username']){
            header("Location:login.php"); 
        }

        ?>
 

Я тоже пробовал это.

         <?php

        if(!isset($_SESSION['ID']) amp;amp;( $_SESSION['ROLE'] != 'admin') )
        {
            header("Location:user.php"); 
            exit;
        }
        else{
            header("Location:employee.php");
            exit;}

         session_start();
        if(!$_SESSION['username']){
            header("Location:login.php"); 
        }
       
        ?>
 

Вход в систему: code.php

         if(isset($_POST['login_btn']))
    {
        $email_login=$_POST['email'];
        $password_login=$_POST['password'];

    if (!empty($email_login) || !empty($password_login)) {
        $query="SELECT * FROM register WHERE email=? AND pwd=?";
            $stmt = $conn->prepare($query); 
            $stmt->bind_param("ss", $email_login,$password_login);
            $stmt->execute();
            $result = $stmt->get_result();  // get the mysqli result

            if($result->num_rows > 0){       
        $row = $result->fetch_assoc();  
                $_SESSION['ID'] = $row['id'];
                $_SESSION['ROLE'] = $row['usertype'];
                $_SESSION['username'] = $row['username'];
                
                if($_SESSION['ROLE'] == 'admin'){ 
                header("Location:index.php");
                die(); }
                else{ 
                    header("Location:user.php");
                    die(); }
                }
        else{
            $_SESSION['status']='Email ID or Password is incorrect';
            header("Location:login.php");
        }
    }    
        else
        {
            $_SESSION['status']='Email ID or Password is Insert';
            header("Location:login.php");
        }   
    }
 

К сожалению, результат тот же. Есть Какое-Нибудь Решение?

Комментарии:

1. что вы получаете за isset($_SESSION[‘ID’]), когда вы пытаетесь выполнить роль администратора

2. Мы не можем видеть содержимое вашей переменной сеанса, поэтому трудно прокомментировать ожидаемое поведение. Какую отладку вы выполнили, чтобы попытаться проверить, что содержит сеанс? Кроме того, что делает session.php код делает, точно? Может быть, покажешь нам это.

3. помогает ли отредактированное в данный момент сообщение для лучшего понимания? @ДжейсоНтомас

4. @АДисон session.php содержит только session_start(); и перенаправление на страницу входа, если вы не вошли в систему. Я включил это в отредактированный пост.

5. вы пробовали повторить $_SESSION[‘РОЛЬ’], чтобы увидеть, будет ли результат от имени администратора ?