php - 我将如何只让用户类型“管理员”访问我的 PHP 项目中的某些页面?
问题描述
标题说明了一切。我将如何只让用户类型“管理员”访问我的 PHP 项目中的某些页面?总而言之,我的 sql 数据库中有一个“用户类型”部分,它分配用户角色(默认)或管理员角色(由管理员在用户管理部分中创建)。问题是,1. 在我的侧边菜单中,我不希望普通用户看到管理部分,其中列出了所有管理模块(用户管理,关于我们的编辑页面)和 2,我不希望普通用户能够访问这些管理页面。有人可以帮我吗?我已经坚持了一段时间。
这是我的侧面菜单代码:
<div id="layoutSidenav">
<div id="layoutSidenav_nav">
<nav class="sb-sidenav accordion sb-sidenav-dark" id="sidenavAccordion">
<div class="sb-sidenav-menu">
<div class="nav">
<div class="sb-sidenav-menu-heading">Standard</div>
<a class="nav-link" href="dashboard.php">
<div class="sb-nav-link-icon"><i class="fas fa-tachometer-alt"></i></div>
Dashboard
</a>
<a class="nav-link" href="surf.php">
<div class="sb-nav-link-icon"><i class="fas fa-plane"></i></div>
Surf Freely
</a>
<a class="nav-link" href="chat.php">
<div class="sb-nav-link-icon"><i class="fas fa-comments"></i></div>
Chat
</a>
<div class="sb-sidenav-menu-heading">Admin</div>
<a class="nav-link" href="register.php">
<div class="sb-nav-link-icon"><i class="fas fa-users"></i></div>
User Management
</a>
</div>
</div>
<div class="sb-sidenav-footer">
<div class="small">Logged in as:</div>
<?php
echo $_SESSION['username'];
?>
</div>
</nav>
</div>
我不希望用户类型为“用户”的用户访问导航栏的这一部分:
<div class="sb-sidenav-menu-heading">Admin</div>
<a class="nav-link" href="register.php">
<div class="sb-nav-link-icon"><i class="fas fa-users"></i></div>
User Management
</a>
这是我的安全文件(阻止登录用户访问某些页面的文件):
<?php
session_start();
include('includes/dbconfig.php');
if(!$_SESSION['username']) {
header('Location: login.php');
}
?>
登录代码:
if (isset($_POST['login_btn'])) {
$email_login = $_POST['email'];
$password_login = $_POST['password'];
$query = "SELECT * FROM register WHERE email='$email_login' AND password='$password_login' LIMIT 1";
$query_run = mysqli_query($connection, $query);
$usertypes = mysqli_fetch_array($query_run);
if ($usertypes['usertype'] == "Admin") {
$_SESSION['username'] = $email_login;
header('Location: dashboard.php');
} else if ($usertypes['usertype'] == "User") {
$_SESSION['username'] = $email_login;
header('Location: dashboard.php');
} else {
$_SESSION['status'] = "Email / Password is Invalid";
header('Location: login.php');
}
}
解决方案
查找登录代码
$_SESSION['username'] = $email_login;
之后添加
$_SESSION['usertype'] = $usertypes['usertype'];
前面
<?php if($_SESSION['usertype']=="Admin"){?>
...ur html code
<?php }?>
推荐阅读
- c# - 返回 IAsyncEnumerable 的方法是否有明确的命名约定?
- python - 错误 1 不允许操作:Spyder 中的错误
- swift - Metal/Swift - 顶点缓冲区的第一个元素有一个错误的值
- apache-kafka - 如果 Zookeeper 节点关闭,Kafka 将不会启动
- wpf - 启动使用 ClickOnce 部署的 wpf 应用程序时出错
- javascript - 循环内的顺序 http 请求
- regex - 重定向域和页面 ID
- git - 分支合并时忽略一些文件
- simulation - AnyLogic 在一个过程中更改参数值
- c# - 根据 2 列值从数据集中删除重复数据