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}">
(....)
答案 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...
,但请确保获得正确的组合。