2012-11-21 71 views
0

yii我創建登錄模塊。只有在用戶名和密碼正確且需要將此用戶的ID存儲到「成功」表中時,我纔想授予用戶訪問權限。但是,當只有用戶名是正確的,密碼錯誤時,我想將該用戶的ID存儲到「試圖」表中,以便給他3次機會輸入正確的密碼。但是,當我正在實現這一點,當密碼錯誤入境不會進入嘗試表。我創造了ActionLogin()方法原樣如何在輸入密碼錯誤時輸入用戶

public function actionLogin() 
{ 
    $model=new LoginForm; 
    $command = Yii::app()->db->createCommand(); 

    // if it is ajax validation request 
    if(isset($_POST['ajax']) && $_POST['ajax']==='login-form') 
    { 
     echo CActiveForm::validate($model); 
     Yii::app()->end(); 
    } 

    // collect user input data 
    if(isset($_POST['LoginForm'])) 
    { 
     $model->attributes=$_POST['LoginForm']; 
     // validate user input and redirect to the previous page if valid 
     if ($model->validate()) 
     { 
      if($model->login()) { 
         $command->insert('attempt', array(
         'id'=>Yii::app()->user->getId(), 
         )); 
         $this->redirect(Yii::app()->user->returnUrl); 
      } 
      if(!$model->login()) 
      {    
      $command->insert('attempt', array(
      'id'=>Yii::app()->user->getId(), 
        )); 
      } 
      } 
    } 

    // display the login form 
    $this->render('login',array('model'=>$model)); 
} 

什麼樣的變化,我需要爲了使用戶的ID的進入嘗試表時密碼是錯誤的事情。請幫幫我。

+1

如果用戶登錄失敗(密碼錯誤)止跌」 t'Yii :: app() - > user-> getId()'是空白/空嗎? – Stu

+0

其實我也想保留訪問用戶的記錄。因此,當用戶名正確且密碼錯誤時,需要將用戶的ID插入Attempt表。 – user1761116

+1

訪客沒有userIds ... – ThomasVdBerge

回答

0

正如評論指出:

正在訪問一個基於Yii的網站沒有分配一個用戶ID的用戶,只有登錄用戶分配了用戶ID(這是有道理的......)。

最好的方法是對登錄嘗試進行基於IP的檢查。您可以通過下面的代碼檢索用戶他的IP:

Yii::app()->request->userHostAddress 

這個答案@Stu和@還稱讚尼科斯 - Tsirakis

相關問題