0

我有一个使用 PHP 框架 Yii 构建的站点和一个用于每个用户唯一的搜索查询的缓存表。我想在用户注销或会话过期后立即清除此缓存。我有每个搜索缓存项的创建日期和时间的条目。

如果用户单击注销,这很容易。我只是清除他们的缓存。但我的问题是,如果他们不点击注销按钮,我怎么知道会话是否已过期?我正在使用标准的 Yii 用户模型,会话不存储在数据库中,而是存储在文件中(我猜 PHP 标准会话正在处理这个问题)。

对于具有缓存项目的给定用户 ID,我如何知道他们的会话已过期?

4

1 回答 1

0

当用户登录时,在全局范围内设置会话,如下所示:

Yii::app()->session['isLoggedIn'] = true;

通过您的控制器,您可以检查用户是否已登录,如下所示:

// Check If User Is Logged In
if (isset(Yii::app()->session['isLoggedIn']) && Yii::app()->session['isLoggedIn'])
{
    // welcome user
} else {
    // welcome guest
}

要注销用户,请清除会话数据,如下所示:

Yii::app()->session['isLoggedIn'] = false;
// or
unset(Yii::app()->session['isLoggedIn']);

有关会话管理的更多信息:http: //www.larryullman.com/2011/05/03/using-sessions-with-the-yii-framework/

于 2013-10-28T11:15:20.733 回答