如何将哈希代码发送到电子邮件重置密码yii2基本?

时间:2016-07-20 11:31:30

标签: email yii2 hashcode reset-password

如何在链接中生成散列字符串并通过电子邮件将该链接发送给用户,以便他或她可以重置密码?

2 个答案:

答案 0 :(得分:2)

在ForgotForm.php中

public function sendEmail() {
    $token = substr(base64_encode(sha1(mt_rand())), 0, 64);
    $model = LoginUser::find()->where(['email' => $this->email])->one();
    $model->setAttributes(['token' => $token]);
    if ($model->save()) {
        $mail = Yii::$app->mailer->compose('redirect', ['model' => $model])
                ->setFrom('rosensoul@gmail.com')
                ->setTo($model->email);
        var_dump($mail);
    }
}

在redirect.php(在邮件文件夹中)

<div> <p> Please use this link to reset your password : <?= Url::to(["/site/reset", 'token' => $model->token], TRUE); ?> </p>

答案 1 :(得分:0)

您可以从此函数生成唯一或散列值

  

md5(uniqid(rand(),true));

将此值保存在数据库中(如用户表中的字段)。 生成具有我们创建的唯一值的URL并将其邮寄给用户。

当用户点击该链接时,从链接获取参数并使用保存在数据库中的值进行检查。