简体   繁体   English

隐藏/显示用户等级的菜单项

[英]Hide/Show menu items for user ranks

I need a little bit of help here. 在这里我需要一点帮助。 I made ranks in mysql database. 我在mysql数据库中排名。

ranks look like this in mysql: 排名在mysql中看起来像这样:

  • User 用户
  • Power user 超级用户
  • Uploader 上传
  • Moderator 主席
  • Administrator 管理员

Code: 码:

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';

So. 所以。 i want to hide menu name 'upload file' for Ranks User* and **Power user . 我想为Rank User *和** Power user隐藏菜单名称“上传文件”。 And show it for Uploader , Moderator , Administrator 并显示给UploaderModeratorAdministrator

Here is my code in navigation menu for upload page: 这是我在上传页面的导航菜单中的代码:

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

Here is my PHP code for checking if user is already logged in: 这是我的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);

?>

The easiest way would be like so: 最简单的方法是这样的:

<?php if ($row["Rank"] == "Uploader" || $row["Rank"] == "Moderator" || $row["Rank"] == "Administrator") { ?>
<li><a href="upload.php">Upload file</a></li>
<?php } ?>

A more elegant way would be to define an array of ranks with permission and check if the rank is in the array like so: 一种更优雅的方法是定义一个具有权限的等级数组,并检查等级是否在数组中,如下所示:

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

This method has the advantage that you don't have to write that many OR operators. 此方法的优点是您不必编写那么多的OR运算符。 Second it's more readable and third it's reusable. 第二,它更具可读性,第三,它是可重用的。 If you want to hide more elements on the page you just have to do in_array instead of copying the whole if with many ORs. 如果您想在页面上隐藏更多元素,则只需要执行in_array即可,而不是在OR众多的情况下复制整个元素。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM