2016-01-06 56 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