所以我有一个if else语句来检查loggedIn
是true
还是false
,它永远不会为假,而是NULL
。所以我要做的是把NULL
的结果变成false
,因为我得到了这个错误
未定义索引:loggedIn
然后它不会让我的header
运行。这可能吗?转换NULL
为false
?
$_SESSION['loggedIn'] = true;
我来试试。让我们从您收到的错误消息开始:
未定义索引:loggedIn
这是什么意思?
- 这通常意味着会话密钥
loggedIn
不存在(意味着它没有设置)。
如何检测?
这很简单,你所要做的就是使用isset()
:
if(isset($_SESSION['loggedIn']) && !empty($_SESSION['loggedIn'])) {...
正如你在上面看到的,这将检查确保loggedIn
会话是设置并且不是空。
现在讨论这个问题,我假设您在尝试启动您想要的会话之前没有使用session_start
。
在脚本的最上面尝试这样设置会话:
error_reporting(E_ALL);
ini_set('display_errors', 1);
// has to be called before starting session
session_start();
$_SESSION['loggedIn'] = true;
在检查会话有效性的页面你可以这样做:
session_start();
if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] !== FALSE) {
//..... the user is logged in...
}
可以查看是否设置了index loggedin
if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'])
{
//user is loggedin
}
else
{
//user is not logged in.
}
将NULL
转换为false
的解决方案是丑陋的。首先,您需要知道为什么您认为$_SESSION['loggedIn']
正在转换为NULL
(您说它是未定义索引)。您可以通过以下命令调试它:
var_dump($_SESSION);
// print_r($_SESSION);
如果loggedIn为null或false返回false,则添加一个条件;)