我一直在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,
));
}
请有人帮帮我。
答案 0 :(得分:3)
最新版本的Yii内置了密码哈希。
要哈希,您可以使用:
$hash = CPasswordHelper::hashPassword($password);
并验证:
if (CPasswordHelper::verifyPassword($password, $hash)){
// password matches with hash
}
else{
// password doesn't match with hash
}
有关详细信息,请查看此页面: