我需要一些帮助。我在mysql数据库中排名。
mysql:中的排名如下
- 用户
- 超级用户
- 上传程序
- 主持人
- 管理员
代码:
ALTER TABLE `tbl_users` CHANGE `Rank` `Rank` ENUM('User','Power User','Uploader','Moderator','Administrator',) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'User';
所以。我想隐藏排名用户*和**超级用户的菜单名称"上传文件"。并显示给上传程序、主持人和管理员
这是我在上传页面导航菜单中的代码:
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Torrenti <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">.....</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">.....</a></li>
<li><a href="#">.....</a></li>
<li role="separator" class="divider"></li>
<li class="dropdown-header">.....</li>
<li><a href="upload.php">Upload file</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">.....</a></li>
</ul>
</li>
以下是我的PHP代码,用于检查用户是否已经登录:
<?php
session_start();
require_once 'class.user.php';
$user_home = new USER();
if(!$user_home->is_logged_in())
{
$user_home->redirect('index.php');
}
$stmt = $user_home->runQuery("SELECT * FROM tbl_users WHERE userID=:uid");
$stmt->execute(array(":uid"=>$_SESSION['userSession']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
?>
最简单的方法如下:
<?php if ($row["Rank"] == "Uploader" || $row["Rank"] == "Moderator" || $row["Rank"] == "Administrator") { ?>
<li><a href="upload.php">Upload file</a></li>
<?php } ?>
一种更优雅的方法是定义一个有权限的列组数组,并检查列组是否在数组中,如下所示:
<?php
$ranks_with_upload_persmission = array("Uploader", "Moderator", "Administrator");
if(in_array($row["Rank"], $ranks_with_upload_permission))
{
?>
<li><a href="upload.php">Upload file</a></li>
<?php
}
?>
这种方法的优点是不必编写那么多OR运算符。第二,它可读性更强,第三,它可重复使用。如果你想在页面上隐藏更多的元素,你只需要做in_array,而不是用许多OR复制整个If。