我正在尝试检查是否存在任何一种情况,以及它是否确实执行了一项操作。但是,正在发生的事情是该页面只产生白页错误。 php_error.log
或Apache中没有任何内容显然我的标记不正确。以下是我想要实现的内容的简要概述。
首先检查用户是否已登录。如果没有,请转到标题位置。
其次检查用户是否处于正确的级别以查看页面。如果没有,则将它们发送到标题位置。
第三,如果两个用户都已登录并且他们具有正确的级别(0或2),则他们可以查看该页面。如果我删除第二个if语句就可以了。
<?php
if(!isset($_SESSION['ls_logged_usr']) {
header('Location: /mobile/index.php?error=NOLOGIN');
exit;
}
?>
<?php
if($_SESSION['ls_level_usr'] !== '0' || ($_SESSION['ls_level_usr'] !== '2') {
header('Location: /mobile/index.php?error=LEVELERROR');
exit;
}
//echo 'level: ' . $_SESSION['ls_level_usr'] . '<br />' . 'Active: ' . $_SESSION['ls_active_usr'];
?>
答案 0 :(得分:1)
header(...)函数将只添加一些HTTP标头。当前脚本不会被终止。
要在设置标题后停止当前脚本,您必须编写如下内容:
if(...) {
header(...);
exit;
}
if(...) ...
答案 1 :(得分:1)
我认为,如果这是您的所有代码,那么没关系,这意味着您的所有条件都是false
试试这个
<?php
if(!isset($_SESSION['ls_logged_usr']) {
header('Location: /mobile/index.php?error=NOLOGIN');
}
elseif($_SESSION['ls_level_usr'] != '0' || ($_SESSION['ls_level_usr'] != '2') {
header('Location: /mobile/index.php?error=LEVELERROR');
}
// do something
?>
我已将您的!==
更改为!=
答案 2 :(得分:0)
我设法使用此代码对其进行排序。而不是使用||我用过&amp;&amp;它起作用了。我需要了解逻辑。我对OR的解释与php不同。非常感谢你们常常给予的所有帮助。
<?php
if(!isset($_SESSION['ls_logged_usr'])) {
header('Location: /mobile/index.php?error=NOLOGIN');
exit;
}
?>
<?php
if (($_SESSION['ls_level_usr'] != '0') && ($_SESSION['ls_level_usr'] != '2')){
header('Location: /mobile/index.php?error=LEVELERROR');
exit;
}
?>