保存用户上次注销的信息

发布于 2025-01-05 07:30:07 字数 781 浏览 0 评论 0原文

我正在尝试将用户上次注销时间保存到 Yii 框架中的数据库中。 我的 WebUser 为:

<?php

// this file must be stored in:
// protected/components/WebUser.php

class WebUser extends CWebUser {



    public function afterLogout()

    {
        $user=user::Model();
        $user->logOutDateTime='TEST';
        $user->saveAttributes(array('logOutDateTime'));
        parent::afterLogout();  
    }

}
?>

在 config\main.php 中我有这些行

// application components
'components'=>array(
    'user'=>array(
        // enable cookie-based authentication
            'class'=>'WebUser',
            'allowAutoLogin'=>true,

    )

现在我已将 logOutDateTime 数据类型设置为 varchar 进行测试,并且我假设每次用户注销时,它都应该写入 'TEST' 进入数据库,但什么也没做。 我哪里做错了?

I am trying to save user's last logout time into a DB in Yii framework.
I have WebUser as:

<?php

// this file must be stored in:
// protected/components/WebUser.php

class WebUser extends CWebUser {



    public function afterLogout()

    {
        $user=user::Model();
        $user->logOutDateTime='TEST';
        $user->saveAttributes(array('logOutDateTime'));
        parent::afterLogout();  
    }

}
?>

and in config\main.php I have these lines

// application components
'components'=>array(
    'user'=>array(
        // enable cookie-based authentication
            'class'=>'WebUser',
            'allowAutoLogin'=>true,

    )

For now I have set logOutDateTime datatype to varchar, to test, and I assume every time user logs out, it should write 'TEST' into database but it does nothing.
Where did I go wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千里故人稀 2025-01-12 07:30:07

我不认为 afterLogout() 仍然有 Yii::app()->user 设置,所以我会做类似的事情(未经测试):

public function beforeLogout()
{
    if (parent::beforeLogout()) {
        $user = User::model()->findByPk(Yii::app()->user->id); // assuming you have getId() mapped to id column
        $user->logOutDateTime='TEST';
        $user->saveAttributes(array('logOutDateTime'));
        return true;
    } else {
        return false;
    }
}

I don't think the afterLogout() still has the Yii::app()->user set, so I would do something like (untested):

public function beforeLogout()
{
    if (parent::beforeLogout()) {
        $user = User::model()->findByPk(Yii::app()->user->id); // assuming you have getId() mapped to id column
        $user->logOutDateTime='TEST';
        $user->saveAttributes(array('logOutDateTime'));
        return true;
    } else {
        return false;
    }
}
卖梦商人 2025-01-12 07:30:07
$user = user::Model();

应该是:

$user = user::Model()->find(/* model_conditions */);
$user = user::Model();

should be:

$user = user::Model()->find(/* model_conditions */);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文