使用PHP过滤具有用户安全级别的页面呈现,但禁用非特权用户的链接


Using PHP to filter page render with user security levels, but disable links for non-privileged users

背景

我正在开发一个web应用程序,该应用程序的用户按安全级别1-5进行分类。这应该作为系统的主要访问级别,允许用户查看(或不查看)敏感信息。

在系统管理页面上,我有一个非常基本的页面布局。。。即

<?php if ($seclvl > 4) { ?>
// basic user code
<? } elseif ($seclvl > 1 && $seclvlv <= 4){ ?>
/// elevated privileges code
<? } elseif ($seclvl == 1) { ?>
// super administrator code
<? } else { ?>
//fallback if no security flag - error msg
<? } ?>

我遇到的是找出最好的方法,让系统在第2-4级中显示几个按钮,但只能通过#1点击,而不必通过php display gray for sec lvl 2-4, activate lvl 1单独指定。。。有人能提出比以下更好的方法吗:

<? } elseif ($seclvl > 1 && $seclvlv <= 4){ ?>
   <? if (!$seclvl == 1) { ?>
     <a href="#" class="disabled-add">Add a User</a>
   <? } else { ?>
     <a href="#" class="active-add">Add a User</a>
   <? } ?>
   //basics for seclvl 2-4... i.e:
   <a href="#" class="view">View User Info</a>     
<? } else { ?>

此外,现在我正在写这段代码(还没有经过测试,但理论已经存在)。。。我在想,我的短标签嵌套if语句实际上不起作用。。。欢迎任何评论。

我真的真的不想为每个该死的链接/按钮指定安全访问条件。

您可以编写一个函数来简化它,或者像这样使用in_array()

<?php
if (in_array($seclvl, [2,3,4])) {  // seclvl is between 1 and 5
    // do something
}

或者像这样的函数:

<?php
is_between($seclvl, $min = 1, $max = 5)) {
    if ($seclvl >= $min && $seclvl <= $max)
       return true;    
    return false;
}