可以说我有如下记录
用户 - id - 用户名 - 密码
登录时,我想用这条记录检查用户的 x_username、x_password,我应该返回匹配的行。如何在 CActiveRecord 中做到这一点?
我尝试了以下
$user = Users::model()->find('username = :x_username AND password = :x_password');
但它不工作
这该怎么做?
可以说我有如下记录
用户 - id - 用户名 - 密码
登录时,我想用这条记录检查用户的 x_username、x_password,我应该返回匹配的行。如何在 CActiveRecord 中做到这一点?
我尝试了以下
$user = Users::model()->find('username = :x_username AND password = :x_password');
但它不工作
这该怎么做?
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;
}
}
试试这个
$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));