嗨,我对这行代码有疑问。
if($_SESSION['permission'] != "superadmin" || "admin"){
//header("location:logout.php");
echo $_SESSION['permission'];
}
如果访问级别不是 superadmin 或 admin ,那么会快速注销用户,但我的if else忽略了||之后的“admin”运营商。非常感谢我能做错的任何帮助。谢谢。还试过&&它仍然不起作用。
答案 0 :(得分:2)
将你的if修改为以下内容:
if($_SESSION['permission'] != "superadmin" && $_SESSION['permission'] != "admin"){
在你的代码中你有两个条件
$_SESSION['permission'] != "superadmin" || "admin"
这被解释为:
$_SESSION['permission'] != "superadmin"
OR
"admin"
和条件
"admin"
等于true,因为它没有空值,因此它将始终传递if statment
答案 1 :(得分:0)
正确的代码:
if($_SESSION['permission'] != "superadmin" &&
$_SESSION['permission'] != "admin"
){
//header("location:logout.php");
echo $_SESSION['permission'];
}
答案 2 :(得分:0)
试试这个
if(($_SESSION['permission'] != 'superadmin') && ($_SESSION['permission'] != 'admin'))
{
//header("location:logout.php");
echo $_SESSION['permission'];
}
答案 3 :(得分:0)
PHP对OR
使用“短路”(即使对于AND
和其他逻辑运算符)语句。
这意味着 - 如果是OR
运营商 - 如果第一个条件是TRUE
,则不评估第二个条件。
而且,我不确定你的语法是否“好”;这是因为(无论短路)前两个字符串将被比较(结果将是"superadmin"
;这是因为两个字符串是两个true
值,因为它们有一个值而不是{ {1}})然后,此值将与会话变量
如果你想正确地重写它,你必须做这样的事情
null