如何为不同的"用户权限"定义不同的 HTML 内容?


function settings ()
{
if (!checkRights(2)) {
showRightsInfo();
}
if (checkRights(4)) {
assign("STAMMDATENSTYLE", "");
assign("ADMINSTYLE", "");
}
if (checkRights(3)) {
assign("STAMMDATENSTYLE", "");
("ADMINSTYLE", "display: none;");
} else {
("STAMMDATENSTYLE", "display: none;");
("ADMINSTYLE", "display: none;");
}
("PAGETITLE", "Einstellungen");
("MAINPAGE", "a_settings");
("settings");

}

所以我有这个代码函数设置,这是执行为什么我想在我的程序中查看设置。我的可用权限是 1,2,3,4:其中 4 应该显示所有内容,3 只显示"stammdatenstyle"。 我的函数 checkRights(( 如果当前登录用户的权限高于请求的权限,则返回我。我拼命地试图更改我的代码,因为我只添加了第 4 个。权利组可以看到所有内容,在"组"3之前能够看到所有内容。问题出在哪里?我的设置((有错误吗?

<div class="panel panel-default" style="{STAMMDATENSTYLE}">
(....)

<div class="panel panel-default" style="{ADMINSTYLE}">
(....)

问题是你跌倒了各种if条件,最后一个 if 说 if = 3 然后这样做,否则就会这样做。 因此,条件 4 将被最后一组设置覆盖。

我会这样做的方法是设置默认值以开始,然后调整您想要的值......

function settings ()
{
if (!$this->ctb->checkRights(2)) {
$this->ctb->showRightsInfo();
}
$this->ctb->tpl->assign("STAMMDATENSTYLE", "display: none;");
$this->ctb->tpl->assign("ADMINSTYLE", "display: none;");
if ($this->ctb->checkRights(4)) {
$this->ctb->tpl->assign("STAMMDATENSTYLE", "");
$this->ctb->tpl->assign("ADMINSTYLE", "");
}
if ($this->ctb->checkRights(3)) {
$this->ctb->tpl->assign("STAMMDATENSTYLE", "");
} 
$this->ctb->tpl->assign("PAGETITLE", "Einstellungen");
$this->ctb->tpl->parse("AUSSCHUSSMAINPAGE", "ausschuss_settings");
$this->buildPage("settings");
}

您也可以更改为使用if() .. elseif... else...但要确保获得正确的组合。

你有以下if/else结构:

if(condition){
// something
}
if(condition){
// something
}else{
// something
}

如您所见,如果满足第一个 if 条件而不满足第二个条件,它将执行脚本的两个部分,而不是一个部分。

例:

$color = 'blue';
if($color == 'blue'){
echo 1;
}
if($Color == 'green'){
echo 2;
}else{
echo 3;
}

这将输出 1 和 3,这就是您当前脚本的工作方式。

因此,您应该至少使用类似 elseif

if(condition){
// something
}elseif(condition){
// something
}else{
// something
}

但我建议你使用开关

switch(condition){
case 1:
// something;
break;
case 2:
// something;
break;
case 3:
// something;
break;
case 4:
// something;
break;
default:
// something
}

最新更新