如果NULL变为false


If NULL turn false

所以我有一个if else语句来检查loggedIntrue还是false,它永远不会为假,而是NULL。所以我要做的是把NULL的结果变成false,因为我得到了这个错误

未定义索引:loggedIn

然后它不会让我的header运行。这可能吗?转换NULLfalse ?

下面是我如何设置会话
$_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,则添加一个条件;)