0

嗨,我对这行代码有疑问。

if($_SESSION['permission'] !=  "superadmin" || "admin"){
    //header("location:logout.php");
    echo $_SESSION['permission'];
}

如果访问级别不是superadminadmin但我的 if else 忽略了 || 之后的“admin”,这是一条快速行,它将注销用户 操作员。对于我可能做错的任何帮助,我将不胜感激。谢谢。也试过 && 还是不行。

4

4 回答 4

2

只需将您的 if 修复为以下内容:

if($_SESSION['permission'] !=  "superadmin" &&  $_SESSION['permission'] != "admin"){

在您的代码中,您有两个条件

$_SESSION['permission'] !=  "superadmin" || "admin"

这被解释为:

$_SESSION['permission'] !=  "superadmin"
OR 
"admin"

和条件

 "admin"

与 true 等价,因为它没有空值,因此它将始终通过 if 语句

于 2013-04-08T07:27:07.613 回答
0

正确的代码:

if($_SESSION['permission'] !=  "superadmin" && 
$_SESSION['permission'] !=  "admin" 
){
             //header("location:logout.php");
             echo $_SESSION['permission'];
        }
于 2013-04-08T07:26:10.527 回答
0

试试这个

    if(($_SESSION['permission'] !=  'superadmin') && ($_SESSION['permission'] != 'admin'))   
     {
         //header("location:logout.php");
         echo $_SESSION['permission'];
    }
于 2013-04-08T07:27:16.093 回答
0

PHP 使用“短路” for OR(甚至 forAND和其他逻辑运算符)语句。
这意味着 - 在OR运算符的情况下 - 如果第一个条件是TRUE,则不评估第二个。
此外,我不确定您的语法是否“好”;那是因为(不管短路)前两个字符串将被比较(结果将是"superadmin";这是因为两个字符串是两个true值,因为它们有一个值而不是null),然后,这个值将与你的会话变量

看看PHP手册

如果你想正确地重写它,你必须做这样的事情

if($_SESSION['permission'] != "superadmin" && $_SESSION['permission'] != "admin")
{
  //do something
}
于 2013-04-08T07:27:58.897 回答