duanhao8540 2016-01-06 13:24
浏览 23
已采纳

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

I need a little bit of help here. I made ranks in mysql database.

ranks look like this in 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. And show it for Uploader , Moderator , Administrator

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
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条回答 默认 最新

  • doupijin0397 2016-01-06 13:45
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题