Я направил пользователя в соответствии с ролью пользователя в панели управления на той же странице входа.
Но с этим пользователь может перейти к панели пользователя, просто предоставив URL-адрес администратора.
Как я могу запретить пользователю входить в панель администратора после входа в систему?
Код для входа следующий.
if(isset($_POST['login'])){
$username = $_POST['username'];
$password = $_POST['password'];
//if the user try to enter without typing anything.
if($username !="" && $password !==""){
/*$password = sha1($password);*/
$sql = "SELECT * FROM users WHERE username ='$username'AND password='$password'";
$result=mysqli_query($conn, $sql) or die('Error');
if(mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_assoc($result)){
$user_id = $row['user_id'];
$fullname = $row['fullname'];
$username = $row['username'];
$phone_number = $row['phone_number'];
$state = $row['state'];
$city = $row['city'];
$street = $row['street'];
$email = $row['email'];
$user_role = $row['user_role'];
//Starting the session for the user
$_SESSION['user_id'] = $user_id;
$_SESSION['fullname'] = $fullname;
$_SESSION['username'] = $username;
$_SESSION['phone_number'] = $phone_number;
$_SESSION['state'] = $state;
$_SESSION['city'] = $city;
$_SESSION['street'] = $street;
$_SESSION['email'] = $email;
$_SESSION['user_role'] = $user_role;
if($user_role == admin){
header('Location:admin/admindashboard.php');
}else{
header('Location:user/userdashboard.php');
}
}
}else{
$error="Username or Password is incorrect!!";
}
}else{
$error = "Please Enter Username and Password";
}
}
Необходимо убедиться, что определенные условия соответствуют для каждого пользователя, чтобы они не перемещались, введя URL-адрес.
Исходя из вашего кода, предполагая, что вы уже перенаправили пользователей на соответствующую страницу. Убедитесь, что у вас есть проверки в следующих файлах.
Добавьте это в заголовок admindashboard.php
if( $_SESSION['user_role'] != "admin")
{
session_destroy();
header("location: login.php");
}
Добавьте это в заголовок userdashboard.php
if( $_SESSION['user_role'] != "user")
{
session_destroy();
header("location: login.php");
}
С помощью вышеуказанных кодов вы заблокируете доступ других пользователей к различным частям сайта.
Как я могу запретить пользователю входить в панель администратора после входа в систему?
Выполнив ту же проверку на этой странице (на admindashboard.php
). Без разницы $user_role
а также admin
Вы должны изучить ту же логику на любой странице, для которой требуется это разрешение. Если проверка не удалась, перенаправьте (возможно, на страницу входа в систему, предложив пользователю войти в систему с учетной записью, которая может получить доступ к этой странице).
Например:
if($_SESSION['user_role'] != admin) {
header('Location:login.php');
}
Вы не можете запретить пользователю запрашивающий любая страница. Вы Можно ответить на этот запрос соответственно.