dropme 2012-05-28 09:17:53 3354次浏览 5条回复 0 0 0

实现了自动登录。现在的问题是,需要在用户登录的时候,记录下登录时间,请问应该在哪里做呢? 我现在是在component的 useridentity类下的authenticate方法里,记录用户登录时间的,但是貌似会漏掉。用户选自动登录的时候,有的时候貌似记录不到。

大大们,应该怎么弄啊?

  • 回复于 2012-05-28 09:19 举报

    可以使用CUserIdentity的setState方法。

  • 回复于 2012-05-28 09:45 举报

    我现在就是在useridentity里的,authticate方法里做的,但是会漏掉哦,您自己试试看?

  • 回复于 2012-05-28 10:36 举报

    有具体实例么?我也很想知道呢~~!setState() 方法该在哪个方法里用呢?

  • 回复于 2012-05-28 10:36 举报

    有具体实例么?我也很想知道呢~~!setState() 方法该在哪个方法里用呢?

  • 回复于 2012-06-09 10:48 举报
    public function authenticate()
    {
        $tblUser = tblUser::model()->find('username=?', array($this->username));
        if($tblUser === null)
            $this->errorCode = self::ERROR_USERNAME_INVALID;
        else if(md5($this->password) !== $tblUser->password)
            $this->errorCode = self::ERROR_PASSWORD_INVALID;
        else
        {
            //记录访问时间
            $tblUser->time_visit = $_SERVER['REQUEST_TIME'];
            $tblUser->save();
            //设置用户信息
            $this->setState('codeOuter', $tblUser->code_outer);
            $this->setState('timeReg', $tblUser->time_reg);
            $this->errorCode = self::ERROR_NONE;
        }
    
        return !$this->errorCode;
    }
    

    setState()方法没用的。当用户选择了自动登录以后,下次打开页面的时候,浏览器貌似是把保存的cookies直接发送给服务器。authenticate()方法就不执行了,你在这里记录登录时间就是白扯啊~~~

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