Php 使用时未定义索引!设置为检查登录凭据
当用户首次登录时,我添加一个Php 使用时未定义索引!设置为检查登录凭据,php,session,Php,Session,当用户首次登录时,我添加一个$\u会话['login']=true。 在另一个函数中,我检查login session变量,以确保用户已登录,而不仅仅是导航到该页面。像这样 if ((!isset($_SESSION['login']) && $_SESSION['login'] != '') || (empty($_SESSION))) { session_register_shutdown(); header("Location: login.php");
$\u会话['login']=true代码>。
在另一个函数中,我检查login session变量,以确保用户已登录,而不仅仅是导航到该页面。像这样
if ((!isset($_SESSION['login']) && $_SESSION['login'] != '') || (empty($_SESSION))) {
session_register_shutdown();
header("Location: login.php");
exit; // stop further executing, very important
}
因此,如果没有设置login会话变量,我将重定向到login页面。它可以工作,但我得到一个未定义的索引:当它重定向时出现登录错误。是否有办法解决此问题?您正在检查变量是否不是空字符串,只有在未设置此变量的情况下:!isset($\u会话['login'])和&$\u会话['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
键是否存在。如果(!isset($\u SESSION['login'])出现语法错误if(!isset($\u SESSION['login'])
您是否有SESSION_start();
某处?还有if(empty($\u SESSION['login']))| |$_SESSION['login']==false){SESSION_register_shutdown();header(“Location:login.php”);exit;//停止进一步执行,非常重要}
如果(SESSION_status()==php_SESSION_NONE){SESSION start()}
Aniket,我只检查是否设置了登录?我不需要检查它是否设置为“true”?@AniketSingh语法错误在哪里?如果有语法错误,他就不会出现未定义的索引错误。如果设置了会话,我不想重定向。如果设置了会话,那么他们就正确登录了。因此,如果我这样做,if((空($\u会话))| |(isset($_SESSION['login'])&&&$_SESSION['login']=''){SESSION_register_shutdown();header(“Location:login.php”);exit;//停止进一步执行,非常重要}
我将陷入重定向循环。是的,这就是我的代码的原因。empty()
对于布尔值false也会返回true。哦,对了。我很抱歉。您没有检查isset。是的,这应该可以。谢谢。