测试代码点火器会话变量的正确方法是什么?


What is the proper way to test CodeIgniter session variable?

采用以下代码片段。测试以确保会话变量不为空的最佳方法是什么?

<?php if ($this->session->userdata('userID')) {
   $loggedIn = 1;
}
else {
   $loggedIn = 0;
} ?>

如果稍后在我的脚本中,我调用以下内容,则第一个正确打印,但在第二个时我收到消息:未定义的变量:登录

<?php echo $this->session->userdata('userID'));
      echo $loggedIn; ?>

我尝试使用!emptyisset,但两者都没有成功。我还尝试使用 if (!($this->session->userdata('userID')) 向后执行 if/then 语句,但没有骰子。有什么想法吗?

请尝试执行以下操作:

<?php 
$loggedIn = 0;
if ($this->session->userdata('userID') !== FALSE) {
   $loggedIn = 1;
}
?>

如果错误仍然存在,则需要发布更多代码,以防在另一个作用域中调用该变量。

如果您的目标是查看是否设置了会话变量'userID',那么以下内容应该有效:

$this->session->userdata('userID') !== false

为什么不在会话中创建一个名为 is_logged_in 的布尔字段,然后检查如下:

if(false !== $this->session->userdata('is_logged_in'))
if($this->session->userdata('is_logged_in')) {
    //then condition
}

这是正确的测试方法!