2016-01-06 31 views
0

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

?> 

回答

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而不是复制整个如果有许多OR。

+0

非常感谢您的时间和您的帮助。现在它工作:)! – Hartman