【问题标题】:How to time out a session state variable in Yii?如何在 Yii 中超时会话状态变量?
【发布时间】:2014-04-01 14:22:47
【问题描述】:

我在用户身份类中创建了一个状态变量,并在控制器中的一项操作中使用。在使用之前我想检查状态变量是否存在。即

在 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 state variable picture is set
}

有没有办法为会话状态变量设置超时? 我知道我们可以在配置文件中提供会话超时,但这会注销我不想要的用户。我只想在 5 分钟后取消设置/销毁状态变量“图片”。

在 Yii 中有什么方法可以做到这一点?

【问题讨论】:

    标签: php session yii


    【解决方案1】:

    据我所知,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
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      相关资源
      最近更新 更多