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

Я уже несколько часов работаю над этим и не могу найти решение, поэтому надеюсь, что кто-то здесь сможет мне помочь. Код, который у меня сейчас есть, работает отлично, но я хотел бы поставить «эхо», только если пользователь получил уровень администратора, если вошедший в систему человек не имеет этого статуса, тогда ссылка не будет отображаться.
Ниже вы можете увидеть index.php. Я хотел бы добавить туда, например: Панель администратора, но эта ссылка должна быть видна только если пользователь является администратором.

<p>Welcome <?php echo $_SESSION['username']; ?>!</p>
<p>This is secure area.</p>
<p><a href="dashboard.php">Dashboard</a></p>
<a href="logout.php">Logout</a>

И мой файл аутентификации

<?php
session_start();

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

Я надеюсь, что здесь есть кто-то, кто может объяснить мне, как это сделать.

Спасибо!

Лус.

0

Решение

Добавьте дополнительную переменную сеанса для уровня доступа пользователей. Затем вы можете защитить страницы, перенаправив пользователей без прав администратора обратно на главную страницу. Вы также можете иметь простой код для отображения ссылок администратора.

<?php
session_start();
if($_SESSION['access'] == 'admin'){
echo "<a href='adminpage.php'>admin panel</a>";
}
?>

Чтобы перенаправить пользователей без прав администратора:

<?php
session_start();

if($_SESSION["access"] != 'admin'){
header("Location: home.php");
}
?>
0

Другие решения

эта ссылка должна быть видна только если пользователь является администратором

Это не лучшее решение, но самое быстрое:

home.php

<?php
if($_SESSION['username'] == 'admin'){
?>
<a href='administration.php'>Administration Panel</a>
<?php
}
?>

administration.php

<?php
if($_SESSION['username'] == 'admin'){
?>
<p>Welcome <?php echo $_SESSION['username']; ?>!</p>
<p>This is secure area.</p>
<p><a href="dashboard.php">Dashboard</a></p>
<a href="logout.php">Logout</a>
<?php
}else{
?>
<p>Restricted Area</p>
<?php
}
?>

Если вам нужна настоящая система разрешений, это зависит от того, где сохранены имя пользователя и пароль

0

Когда вы проверяете свою базу данных для аутентификации пользователя, БД может содержать число, которое представляет способность пользователя. Например, администратор может иметь 9, где обычный пользователь, который читает только вещи, может иметь 1. Участник может иметь 5.

Когда пользователь аутентифицирован и вы создаете сеанс для этого пользователя, соберите это значение из БД и добавьте его в свой сеанс.

Auth File

<?php
$user = isset($_POST[user])?$_POST['user']:"";
$pass = isset($_POST['pass'])?$_POST['pass']:"";

if(!empty($user) AND !empty($pass)){
// Authenticate against DB
// Connect DB code & Injection safe query look code ...
// Result set:
$security = $row['security'];
} else {
header("location: login.php?error=Bad Username or Password");
}
if(isset($security)){
session_start();
$_SESSION['username'] = $user;
$_SESSION['security'] = $security;
header("location: index.php?login=successful");
}
// if all fails, logout
header("location: logout.php");
?>

Индекс

<?php
session_start();
?>
<html>
<body>
<?php
echo (($_SESSION['security'] > 6)?"<a href='dashboard.php'>Dashboard</a>":"") . "\r\n";
echo ((isset($_SESSION['username']))?"<a href='logout.php'>Logout</a>":"<a href='login.php'>Log In</a>") . "\r\n";
?>

</body>
</html>
0
По вопросам рекламы [email protected]