在 yii 中,我需要存储用户_login time
和 使用会话。logout time
total duration logged_
我是会话概念的新手。我不知道如何检索total logged time
, login time
, log out time
. 在会话表中它只存储id--expire--data
我存储会话的代码是
protected/config/main.php
'components'=>array(
'session'=>array(
'class' => 'CDbHttpSession',
'connectionID' => 'db',
'sessionTableName' => 'dbsession',
),
),
一切正常,但存储在 db 中的数据已加密。所以我无法检索我需要的数据。另一件事是什么数据存储在会话表中。
我在没有会话的情况下使用的替代方式,但也有问题。我用它来获取login time
,logout time
和total duration logged
我使用了带有字段的表活动
id,username,user_activity,url,ip,time
用户登录和注销时在表格中填写数据的代码如下
protected/controller/sitecontrollers.php
public function actionLogin()
{
/* log in */
$model=new LoginForm;
// if it is ajax validation request
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
// collect user input data
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if($model->validate() && $model->login())
{
$activity = new Activity;
$activity->username = Yii::app()->user->id;
//$activity->userId = Yii::app()->user->id;
$activity->user_activity = "1";
$activity->url=$_SERVER['HTTP_REFERER'];
$activity->ip=$_SERVER['REMOTE_ADDR'];
// This breaks the site when log in details are wrong
$activity->save();
if($activity->save())
$this->redirect(Yii::app()->homeUrl);
}
}
// display the login form
if(Yii::app()->user->id==null)
{
$this->render('login',array('model'=>$model));
}
else
{
throw new CHttpException(404,'User already logged in.');
}
}
/**
* Logs out the current user and redirect to homepage.
*/
public function actionLogout()
{
// log
$activity = new Activity;
$activity->username = Yii::app()->user->id;
$activity->user_activity = "0";
$activity->url=$_SERVER['HTTP_REFERER'];
$activity->ip=$_SERVER['REMOTE_ADDR'];
$activity->save();
Yii::app()->user->logout();
if($activity->save())
$this->redirect(Yii::app()->homeUrl);
}
以这种方式一切正常,但是当浏览器关闭时,应用程序被注销并且数据没有进入数据库。那么持续时间的计算就会出错。所以只有我参加了方法会话但不知道如何使用。