Я занимаюсь разработкой веб-приложения, в котором пользователи классифицируются по уровням безопасности 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 { ?>
Кроме того, теперь, когда я пишу этот блок кода (все еще не проверенный, но теория есть) … я думаю, что мой короткий тег вложен, если операторы на самом деле не работают … Любые комментарии приветствуются.
я действительно действительно не хочу указывать условия безопасного доступа для каждая чертова ссылка / кнопка.
Вы можете написать функцию, чтобы сделать ее проще или использовать 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;
}
Других решений пока нет …