0

可以说我有如下记录

用户 - id - 用户名 - 密码

登录时,我想用这条记录检查用户的 x_username、x_password,我应该返回匹配的行。如何在 CActiveRecord 中做到这一点?

我尝试了以下

$user = Users::model()->find('username = :x_username AND password = :x_password');

但它不工作

这该怎么做?

4

2 回答 2

0

yii框架中的登录管理。您应该使用UserIdentity组件。您需要修改components文件夹下的useridentity,如下所示。

<?php


class UserIdentity extends CUserIdentity
{
    private $_id;

    public function authenticate()
    {

        $users=User::model()->find('LOWER(username)=?',array(strtolower($this->username)));
        if(!isset($users[$this->username]))
            $this->errorCode=self::ERROR_USERNAME_INVALID;
        else if($users[$this->username]!==$this->password)
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        else
        {
            $this->_id=$user->id;
            $this->username=$user->username;
            $this->errorCode=self::ERROR_NONE;
        }
        return !$this->errorCode;
    }
    public function getId()
    {
        return $this->_id;
    }
}

有关信息,请参阅此链接

于 2013-12-06T08:11:36.100 回答
-1

试试这个

 $user = Users::model()->find('username = :x_username AND password = 
:x_password',array(':x_username'=>'myname',':x_password'=>'mypassword'));

或者

   $user = Users::model()->find('username = :x_username AND password = 
    :x_password',array(':x_username'=>$myname,':x_password'=>$mypassword));
于 2013-12-05T12:07:19.843 回答