密码由yd中的md5加密两次

时间:2014-03-18 10:11:22

标签: php yii

我一直在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,
    ));
}

请有人帮帮我。

1 个答案:

答案 0 :(得分:3)

最新版本的Yii内置了密码哈希。

要哈希,您可以使用:

$hash = CPasswordHelper::hashPassword($password);

并验证:

if (CPasswordHelper::verifyPassword($password, $hash)){
    // password matches with hash
}
else{
    // password doesn't match with hash
}

有关详细信息,请查看此页面:

http://www.yiiframework.com/doc/api/1.1/CPasswordHelper/