受限制的页面仅适用于角色管理员

时间:2015-08-08 20:12:44

标签: php admin role

我现在已经工作了几个小时,我找不到解决方案,所以我希望有人可以帮助我。我现在的代码工作正常,但我想只在用户以管理员身份获得级别时才设置“echo”,如果登录的人没有此状态,则链接将不会显示。 下面你可以看到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(); 
    }
?>

我希望这里有人可以解释我如何做到这一点。

谢谢!

Loes。

3 个答案:

答案 0 :(得分: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");
    }
?>

答案 1 :(得分: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
    }
?>

如果您需要真正的权限系统,这取决于用户名和密码的保存位置

答案 2 :(得分:0)

当您检查数据库以验证用户身份时,数据库可以包含代表用户能力的数字。例如,管理员可以拥有9,其中只读取内容的常规用户可能有1个。贡献者可以有5个。

当用户通过身份验证并为该用户构建会话时,请从数据库中收集此值并将其添加到会话中。

验证文件

<?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>