我现在已经工作了几个小时,我找不到解决方案,所以我希望有人可以帮助我。我现在的代码工作正常,但我想只在用户以管理员身份获得级别时才设置“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。
答案 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>