当用户首次登录时,我添加$_SESSION['login'] = true;
。
在另一个函数中,我正在检查登录会话变量,以确保用户已登录,而不仅仅是导航到该页面。像这样。
if ((!isset($_SESSION['login']) && $_SESSION['login'] != '') || (empty($_SESSION))) {
session_register_shutdown();
header("Location: login.php");
exit; // stop further executing, very important
}
因此,如果未设置登录会话变量,我将重定向到登录页面。它工作但我得到一个未定义的索引:重定向时登录错误。有办法解决这个问题吗?
答案 0 :(得分:1)
如果变量未设置,则检查变量是否为空字符串:!isset($_SESSION['login']) && $_SESSION['login'] != ''
。这些情况是相互排斥的。你可能打算这样做吗?
if ((empty($_SESSION)) || (isset($_SESSION['login']) && $_SESSION['login'] == '')) {
session_register_shutdown();
header("Location: login.php");
exit; // stop further executing, very important
}
虽然empty()
检查索引是否未设置或是否为空字符串,但您可以这样做:
if (empty($_SESSION) || empty($_SESSION['login'])) {
session_register_shutdown();
header("Location: login.php");
exit; // stop further executing, very important
}
请注意,操作顺序也很重要。在检查数组是否为空之后,应检查是否存在login
密钥。