【问题标题】:What is the proper way to test CodeIgniter session variable?测试 CodeIgniter 会话变量的正确方法是什么?
【发布时间】:2012-05-29 13:08:03
【问题描述】:

取下面的代码sn-p。确保会话变量不为空的最佳测试方法是什么?

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

如果稍后在我的脚本中,我调用以下命令,第一个打印正确,但第二个我收到 Message: Undefined variable: loggedIn

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

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

【问题讨论】:

    标签: php codeigniter session variables isset


    【解决方案1】:
    if($this->session->userdata('is_logged_in')) {
        //then condition
    }
    

    这是正确的测试方法!

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        如果您的目标是查看会话变量 'userID' 是否已设置,那么以下应该可以工作:

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

        【讨论】:

          【解决方案4】:

          尝试执行以下操作:

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

          如果错误仍然存​​在,您需要发布更多代码,以防您在另一个范围内调用该变量。

          【讨论】:

          • 它实际上最终成为了一个问题,即没有将变量传递给我正在加载的视图(菜鸟移动!),但无论如何我很感激澄清。谢谢朋友!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-05-25
          • 1970-01-01
          • 2019-01-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多