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

时间:2018-05-25 06:54:44

标签: php 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}">
 (....)

2 个答案:

答案 0 :(得分:1)

你有以下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
}

答案 1 :(得分:1)

问题在于你在各种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...,但请确保获得正确的组合。