【问题标题】:Using PHP to filter page render with user security levels, but disable links for non-privileged users使用 PHP 过滤具有用户安全级别的页面呈现,但禁用非特权用户的链接
【发布时间】:2014-11-10 21:46:18
【问题描述】:

背景

我正在开发一个 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
<? } ?>

我遇到的问题是找出让系统在 sec lvl 2-4 中显示几个按钮的最佳方法,但只能通过 #1 点击,而无需通过 php @单独指定987654323@... 谁能提出比以下更好的方法:

<? } 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 语句实际上不起作用......欢迎任何评论。

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

【问题讨论】:

  • 我通常的做法是使权限 2d。阿拉github.com/soatok/furbb/blob/master/install/sql/default/…
  • @scott 我很欣赏您的意见,但不幸的是我正在使用纯 html、php 和 mysql 构建系统。我不认为我现在可以实现 mariaDB 插件,因为这个项目已经过期了......
  • 其实是postgresql,不过我明白了。

标签: php html security user-interface mysqli


【解决方案1】:

您可以编写一个函数使其更简单,或者像这样使用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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多