zcyxm 2012-06-15 14:45:32 4169次浏览 11条回复 0 0 0

怎么保存最后登录日期啊? 这样的需求,在用户登录后页面显示用户上次登录的日期。

我是这样处理的,在用户登录时记录用户的登录日期,于是我在登陆的中加入了

$user = $this->findByAttributes(array('user_id' => Yii::app()->user->id));
                        $user->last_login = time();
                        $user->save();

但是我读取出来的数据缺是这次登录的时间,也就是更新后的时间。

大家有没有啥方法处理这个问题啊?

在beforeLogout()里面做文章?如何做?

  • 回复于 2012-06-15 15:21 举报

    在logout()方法里做

    $user = $this->findByAttributes(array('user_id' => Yii::app()->user->id));
    $user->last_login = time();
    $user->save();
    Yii::app()->user->logout();
    $this->redirect(Yii::app()->homeUrl);
    

    这样能解决么?

  • 回复于 2012-06-15 15:26 举报

    想过,应该不行。不是每个人退出都要点退出的,可能是关闭浏览器....

  • 回复于 2012-06-15 15:35 举报

    嗯 ,还有自动登陆的情况也是不行的 ……

  • 回复于 2012-06-15 15:45 举报

    可以用cookie + js 来实现,只是个思路哈

  • 回复于 2012-06-15 16:05 举报

    再加一个字段吧,就是上次登录时间。
    这次更新最近更新时间。
    下次登录的时候,把这次的登录时间更新到上次登录时间。

  • 回复于 2012-06-15 16:07 举报

    恩,这个是不错的办法。

  • 回复于 2012-06-15 16:12 举报

    楼下的lilongsy的思路不错。

    还有个,应该也是可行的吧
    登录成功后立马 $this->setState('time',$user->last_login_time);

    然后进行 $user->last_login_time = time();
    $user->save();
    再用 Yii::app()->user->getState('time')

  • 回复于 2012-06-15 16:35 举报

    乍的一想觉得可以,想做的的时候,我把自己又绕进去了....貌似不行?

  • 回复于 2012-06-15 16:38 举报

    囧,又绕出来了,可行!!

  • 回复于 2012-06-15 16:38 举报

    哪儿不行?一个是“上次登录时间”,一个是“当前登录时间”。
    再此登录的时候,只要把上次的“当前登录时间”更新到“上次登录时间”就可以了。
    这样就不用管cookie超时了。

  • 回复于 2012-06-15 16:50 举报

    恩,这个办法不错,不过好绕啊

您需要登录后才可以回复。登录 | 立即注册