2016-11-02 12 views
1

このスクリプトを使用して正常にサインインできません。私のモデルではLoginform.phpyii2 hashingのパスワード登録とサインイン

public function validatePassword($attribute, $params) 
{ 
    if (!$this->hasErrors()) { 
     $user = $this->getUser(); 

     if (!$user || $user->validatePassword($this->password)) { 
      $this->addError($attribute, 'Incorrect name/password.'); 
     } 

    } 
} 

は私が持っているこの

User.phpここ

public function beforeSave($insert) { 
    if (parent::beforeSave($insert)) { 
     if ($this->isNewRecord) { 
      $this->password = $this->setPassword($this->password); 
     } 
     return true; 
    } 
    return false; 
} 

public function validatePassword($password) { 
    return Yii::$app->getSecurity()->validatePassword($password, $this->password); 
} 

public function setPassword($password) { 
    return $this->password = Yii::$app->security->generatePasswordHash($password); 

} 

は私の登録スクリプトで

Signupform.php

public function signup() { 
    if($this->validate()) { 

     $user = new User(); 
     $user->username = $this->username; 
     $user->email = $this->email; 
     $user->setPassword($this->password); 
     $user->save(); 
     return $user; 
    } 

    return null; 
} 

は、誰もがこれで私を助けてくださいことはできますか?ありがとう。

+0

サインアップ機能する$ user->のsetPassword(の$ this - >パスワード)からこれを削除しています。 あなたはすでにユーザーモデルdeforeSave関数 –

+0

で動作していません。私のテーブルには何も挿入されていません。カスタマイズスクリプトを提供できますか?ありがとう – kaizer

+0

いくつかの妥当性検査エラーかもしれませんprint_r($ user - >。getError());死ぬ(); あなたはこれをチェックしてください。 –

答えて

0

この従ってください:

モデルUser.php

public $c_password; //Define a variable for confirm password 

//This is rule 

public function rules() { 
    return [ 
     [['fname', 'lname', 'username', 'password',], 'required'], 
     [['fname', 'lname', 'authKey', 'accessToken'], 'string', 'max' => 100], 
     [['authKey', 'accessToken'], 'safe'], 
     [['username'], 'unique'], 
     ['c_password', 'required'], 
     ['c_password', 'compare', 'compareAttribute' => 'password', 'message' => "Passwords don't match"], 

    ]; 
} 


public function beforeSave($insert) { 
      if (parent::beforeSave($insert)) { 
       $this->password = Yii::$app->security->generatePasswordHash($this->password); 
       return true; 
      } else { 
       return false; 
      } 
     } 

IAMあなたが必要

SiteController.phpに応じてモデルを作成することができ、登録のためのサイトコントローラで関数を作成します

public function actionRegister() { 
    $model = new \app\models\Users; 
    if ($model->load(Yii::$app->request->post()) && $model->save()) { 
     Yii::$app->session->setFlash('register', 'Registration Successful'); 
     return $this->redirect(['login']); 
    } else { 
     return $this->render('register', ['model' => $model]); 
    } 
} 

そして、これは私のビューファイルregister.php

<?php 
    $form = ActiveForm::begin([ 
    'id' => 'login-form', 
    'options' => ['class' => 'form-horizontal'], 
     'fieldConfig' => [ 
     'template' => "{input}\n{error}", 
     'options' => [ 
     'tag' => false, 
     ], 
      ], 
    ]); 
?>   
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?> 

<?= $form->field($model, 'password')->passwordInput([]) ?> 

<?= $form->field($model, 'c_password')->passwordInput([]) ?> 
<button type="submit">Sign up</button> 
<?php ActiveForm::end(); ?> 
+0

この兄弟のおかげで! – kaizer

関連する問題