我的页面顶部有这个脚本,可以检查有效用户是否:
if (isset($_SESSION["loggedin"])) {
if ($_SESSION["loggedin"] == true) {
$res = checkKey($_SESSION["uiid"]);
if ($res > 0) {
header("Location: admin.php");
exit;
} else {
header("Location: scripts.php?action=logout");
exit;
}
} else {
header("Location: index.php");
exit;
}
} else {
header("Location: index.php");
exit;
}
但是当我尝试访问该页面时,我在Chrome中看到一个页面,说明有太多重定向。我已经在SO上看到了使用isset()
来解决此类问题的其他答案,但是我已经在其中排除了其他问题。我做错了什么?
答案 0 :(得分:1)
你可以做这样的事情希望这会起作用
if (isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] == true) {
$res = checkKey($_SESSION["uiid"]);
} else {
header("Location: index.php");
exit;
}
if (!empty($res) && $res > 0) {
header("Location: admin.php");
exit;
} else {
header("Location: scripts.php?action=logout");
exit;
}
答案 1 :(得分:0)
请注意,如果用户未登录且此代码位于index.php上,您将无休止地循环访问index.php。
chrome上显示的错误意味着这是一个无限循环的重定向。
根据您的评论,这是在Admin.php上,请注意,每次“重定向”页面时都会执行此操作。所以,如果您只是在“正确”时跳过重定向,那么您的问题将得到解决
if (isset($_SESSION["loggedin"])) {
if ($_SESSION["loggedin"] == true) {
$res = checkKey($_SESSION["uiid"]);
if ($res > 0) {
// Here we assume user is an admin, so there's no need to redirect him
// he's at the right place
} else {
header("Location: scripts.php?action=logout");
exit;
}
} else {
header("Location: index.php");
exit;
}
} else {
header("Location: index.php");
exit;
}
答案 2 :(得分:0)
以下是获得所需结果的代码:
if (isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] == true) {
$res = checkKey($_SESSION["uiid"]);
} else {
header("Location: index.php");
exit;
}
if (empty($res) || $res < 0) {
header("Location: scripts.php?action=logout");
exit;
}