#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[‘РОЛЬ’], чтобы увидеть, будет ли результат от имени администратора ?