我有一个登录脚本,可以检查用户是管理员还是测试用户。我写这篇文章是为了检查其中任何一个,因为当我将我的网站设置为维护模式时,它不会允许除管理员和测试用户之外的任何人登录。问题是,就目前而言,我只能有 1 个用户才能使其正常工作。所以要么是管理员,要么是测试用户。我想两者兼得。我知道并阅读了 PHP 和/或语句,但这不适用于我正在尝试的内容。这是非常基本的imo。 if($user === false){ $_SESSION['message'] = '<br /><div class="text-center alert alert-danger" role="alert">Your username is incorrect. Please try again</div>'; } elseif ($username <> admin or $username != testuser){ header('Location: /maint.php'); exit; }这有效 if($user === false){ $_SESSION['message'] = '<br /><div class="text-center alert alert-danger" role="alert">Your username is incorrect. Please try again</div>'; } elseif ($username <> admin){ header('Location: /maint.php'); exit; }我什至尝试添加管道而不是 or 但这确实有效。 if($user === false){ $_SESSION['message'] = '<br /><div class="text-center alert alert-danger" role="alert">Your username is incorrect. Please try again</div>'; } elseif ($username <> admin || $username != davidm){ header('Location: /maint.php'); exit; }如果两者都在脚本中,则两者都失败并被重定向到 maint.php有人在这里看到我的错误吗?
2 回答
HUWWW
TA贡献1874条经验 获得超12个赞
这不是运营商的问题,错误在逻辑上。
if ($username != 'admin' || $username != 'testuser')
header('Location: /maint.php');意味着,如果用户名不是admin,或者如果用户名不是testuser,则重定向。这听起来不错,除了它总是会重定向,因为如果用户名是admin那么它就不是testuser,反之亦然。你实际上想要:
if ($username != 'admin' && $username != 'testuser')
慕桂英3389331
TA贡献2036条经验 获得超8个赞
这应该有效:您没有围绕“amin”和“testuser”的引用。在带有 AND 或 OR 的 if 语句中,我总是在每个部分周围使用额外的 ()。它更适合阅读并且有助于避免错误。
if($user === false){
$_SESSION['message'] = '<br /><div class="text-center alert alert-danger"
role="alert">Your username is incorrect. Please try again</div>';
} elseif ( ($username != "admin") or ($username != "testuser") ){
header('Location: /maint.php');
exit;
}
- 2 回答
- 0 关注
- 204 浏览
添加回答
举报
0/150
提交
取消
