2014-09-24 151 views
1

我有一个正常的php登录连接到数据库认证用户,现在我需要将其转换为使用yii框架的登录,有人可以告诉我,以便这样做..什么是我应该做的第一件事情,我可以将其转换为yii登录。下面是我打电话给正常的php登录到YII登录

function login($usr,$pwd) { 
    $query = "SELECT * FROM login WHERE us.username='$usr' AND us.password='$pwd'; "; 
    $dataReader=$command->query(); 
    $row = mysql_fetch_array($dataReader); 
    $log = new stdClass(); 
    if($row) { 
     $pro->accountID = (int)$row['accountID']; 
     $pro->accountname = $row['accountname']; 
     $pro->usertype = (int)$row['usertype']; 
       $string = rand() . 'SURVAYLAND' . rand() . $usr. $pwd; 
      $_SESSION['SURVEY_AUTHENTICATE_KEY'] = md5($string); 
    } else { 
     $pro = false; 
    } 
} 

回答

0

每当你打电话Yii::app()->user当前登录的功能,你得到的CWebUser一个实例。这是Yii代表当前正在查看您的应用程序的用户的方式。

该用户可以在不登录的情况下登录或访问应用程序(换句话说,成为一个客人)。

Class CWebUser有一个名为login的方法,如您所期望的那样,该方法会登录到用户。

方法login()以一个实现IUserIdentity接口的对象作为参数。

,使自己的最简单的方法是创建一个简单的类(称之为MyIdentity的为例):

//this class' constructor takes a username and a password 
class MyIdentity extends CUserIdentity 
{ 
    private $_id; 
    public function authenticate() 
    { 
     // check username and password in DB 
     // return true or false to signal whether user should be logged in 
    } 

    public function getId() 
    { 
     return $this->_id; 
    } 
} 

然后使用您刚才创建实际登录的用户是什么:

// Login a user with the provided username and password. 
$identity=new MyIdentity($username,$password); 
if($identity->authenticate()) 
    Yii::app()->user->login($identity); 
else 
    echo $identity->errorMessage;