yii では、users と Using session を保存する必要が_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 に保存されているデータは暗号化されています。そのため、必要なデータを取得できません。もう 1 つ、セッション テーブルに格納されているデータについて説明します。
セッションなしで使用した別の方法ですが、それにも問題があります。を取得するためにこれを使用し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);
}
このようにしてすべて正常に動作しますが、ブラウザを閉じるとアプリケーションがログアウトされ、データがデータベースに入力されません。その後、期間の計算が間違っています。メソッドのセッションを受けたのは私だけですが、使い方がわかりません。