Email 如何向电子邮件发送哈希代码以重置密码yii2 basic?

Email 如何向电子邮件发送哈希代码以重置密码yii2 basic?,email,yii2,hashcode,reset-password,Email,Yii2,Hashcode,Reset Password,如何在链接中生成哈希字符串并通过电子邮件将该链接发送给用户,以便用户可以重置密码?您可以从该函数生成唯一值或哈希值 md5(uniqid(rand(),true)) 将此值保存在数据库中(类似于用户表中的键的字段)。 生成一个具有我们创建的唯一值的url,并将其发送给用户 当用户单击该链接时,从该链接获取参数,并检查保存在数据库中的值。在ForgotForm.php中 public function sendEmail() { $token = substr(base64_encode(

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

您可以从该函数生成唯一值或哈希值

md5(uniqid(rand(),true))

将此值保存在数据库中(类似于用户表中的键的字段)。 生成一个具有我们创建的唯一值的url,并将其发送给用户

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

在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中(在邮件文件夹中)

请使用此链接重置密码:


使用
Yii::$app->getSecurity()->generateRandomString(64)生成哈希字符串将其保存在具有用户id的表中,然后发送带有hashcode作为查询字符串参数的电子邮件。您将能够使用该散列来识别用户,并允许用户更改密码。一旦更改了密码,就从表中删除hashcode。这个流程在高级模板中有很好的文档记录。请检查并遵循高级模板中实现的流程…我使用$token=substr(base64_encode(sha1(mt_rand()),0,64);对于哈希代码,但需要一些代码帮助来发送电子邮件并将其检查到数据库
<div> <p> Please use this link to reset your password : <?= Url::to(["/site/reset", 'token' => $model->token], TRUE); ?> </p>