Я разрабатываю приложение в системе Yii. Я создаю регистрационную форму, где есть поле, которое является паролем. После регистрации я увидел, что результат пароля, хранящийся в db, зашифровывается дважды из md5.
Я написал в модели как:
protected function afterValidate() { $this->password = $this->encrypt($this->password); } public function encrypt($value) { return md5($value); }
контроллер
public function actionRegistration() { $model=new User('registration'); // Uncomment the following line if AJAX validation is needed $this->performAjaxValidation($model); $model->scenario = 'registerwcaptcha'; if(isset($_POST['User']) ) { $model->attributes=$_POST['User']; $keystring = md5( rand(0,1000) ); // Generate random 32 character hash and assign it to a local variable. $model->keystring = $keystring; //$model->password = md5( $model->password ); if($model->validate()) { // and here is the actual HACKY part $model->scenario = NULL; // save user registration if($model->save()) $this->redirect(array('emailverify')); } } $this->render('registration',array( 'model'=>$model, )); }
Может ли кто-нибудь помочь мне, пожалуйста.
В последней версии Yii встроена хеширование паролей.
Для хэша вы можете использовать:
$hash = CPasswordHelper::hashPassword($password);
и проверить:
if (CPasswordHelper::verifyPassword($password, $hash)){ // password matches with hash } else{ // password doesn't match with hash }
Более подробную информацию можно найти на этой странице: