使用IF条件重定向用户

时间:2013-09-09 00:55:53

标签: php

我想使用此IF根据权限重定向用户。但用户总是被重定向到仪表板。

其实我已经设定了:

$perm_edit = '0';
$user_level = '1';

if ($perm_edit !== 1 || $user_level !== 1) {
      header("Location: $url/dash.php?error=1"); exit;
 }

||运营商只需要一个条件就可以了。

我错了什么?

2 个答案:

答案 0 :(得分:6)

三重比较运算符是“严格的”,这意味着它们检查类型和值。您正在将字符串与数字进行比较,这意味着它们将始终为假。要么将它们都变成数字,要么只使用双重比较:$perm_edit != 1

答案 1 :(得分:1)

这是因为您使用的是 运算符(!==)。它没有type juggling,这就是你在这种情况下所需要的。

为了确定不同类型的两个是否相同,您必须使用不等于运算符({ {1}}):

!=

另一种写作方式是:

if ($perm_edit != 1 || $user_level != 1) {
    header("Location: $url/dash.php?error=1");
    exit;
}

有效的原因是因为PHP搞砸了类型。换句话说,它将if ( ! $perm_edit || ! $user_level) { header("Location: $url/dash.php?error=1"); exit; } 变为0,将false变为1,然后true运算符(也称为NOT运算符)将其变为对面。

您应该通常阅读comparison operatorsoperators