我想弄出一些东西。我正在使用CodeIgniter,我在会话中存储了一些信息,所以我可以在任何地方访问它。我需要检查一个变量是否已经设置,但我使用的代码不起作用(控制器分开)
这是我在会话中存储数据的方式:
$this->session->set_userdata('myvalue', 'x');
这就是我试图检查变量是否已被声明的方式:
if (isset($this->session->userdata('myvalue'))) //doesn't work
提前感谢阅读和回复;)
顺便说一句:我需要这个功能,因为如果我知道var尚未被声明,则意味着会话已经过期并且已经被破坏。所以我想将用户转发到一个视图,我告诉他他已经长时间处于非活动状态并且已经自动注销等等。
答案 0 :(得分:1)
没有必要使用函数,如果未设置变量,userdata()
已经返回FALSE,所以:
if (!$this->session->userdata('myvalue')) {
//code here
}
就够了。
if (isset($this->session->userdata('myvalue')))
不起作用,因为isset()
无法使用函数的返回值。你应该得到一个E_NOTICE说,但是,像
不能在写上下文中使用方法返回值
答案 1 :(得分:1)
这是检查CodeIgniter会话中是否设置了特定值的方法:
if ( $this->session->userdata('myvalue') ) {
// The item 'myvalue' exists in the session
} else {
// The item 'myvalue' does not exist in the session
}
这就是CodeIgniter的userdata()
函数在system/libraries/Session.php
中的工作原理:
function userdata($item)
{
return (!isset($this->userdata[$item])) ? FALSE : $this->userdata[$item];
}
如果会话中不存在该项目,则返回FALSE
,否则该项目为。