Php 如何在Yii中超时会话状态变量?
我在用户标识类中创建一个状态变量,并在控制器中的一个操作中使用。在使用之前,我想检查状态变量是否存在。i、 e 在userIdentity类中:Php 如何在Yii中超时会话状态变量?,php,session,yii,Php,Session,Yii,我在用户标识类中创建一个状态变量,并在控制器中的一个操作中使用。在使用之前,我想检查状态变量是否存在。i、 e 在userIdentity类中: Yii::app()->user->setState('pictures', array());//Want this variable to die after 5 mins 在我的控制器操作中: if(isset(Yii::app()->user->pictures)) { //do what I want if st
Yii::app()->user->setState('pictures', array());//Want this variable to die after 5 mins
在我的控制器操作中:
if(isset(Yii::app()->user->pictures))
{
//do what I want if state variable picture is set
}
有没有办法为会话状态变量设置超时?
我知道我们可以在配置文件中提供会话超时,但这将注销用户,这不是我想要的。我只想在5分钟后取消设置/销毁状态变量“pictures”
有没有办法在Yii中做到这一点?据我所知,Yii中没有这样的内置机制,所以 成功登录时:
Yii::app()->user->setState('pictures', array());
Yii::app()->user->setState('logged_time', microtime(true));
在每次请求之前
if (Yii::app()->user->hasState('logged_time')
&& (microtime(true) - Yii::app()->user->logged_time > 300)) {
Yii::app()->user->setState('pictures', null); // unset pictures state
Yii::app()->user->setState('logged_time', null); // unset logged_time if necessary
}