隐藏/显示用户排名的菜单项

时间:2016-01-06 13:24:48

标签: javascript php mysql

我需要一点帮助。我在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);

?>

1 个答案:

答案 0 :(得分:4)

最简单的方法是:

<?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中进行操作,而不是复制整个if有很多OR。