2014-09-24 103 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;