【问题标题】:How to send Hash code to email for reset password yii2 basic?如何将哈希码发送到电子邮件以重置密码 yii2 basic?
【发布时间】:2016-07-20 11:31:29
【问题描述】:

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

【问题讨论】:

  • 使用Yii::$app->getSecurity()->generateRandomString(64); 生成哈希字符串,将其保存在带有 user_id 的表中,然后使用哈希码作为查询字符串参数发送电子邮件。您将能够使用该哈希识别用户并让用户更改密码。更改密码后,从表中删除哈希码。
  • 高级模板中详细记录了流程。请检查并遵循在高级模板中实现的流程...

标签: email yii2 hashcode reset-password


【解决方案1】:

在 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>

【讨论】:

    【解决方案2】:

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

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

    将此值保存在数据库中(用户表中的 key 等字段)。 使用我们创建的唯一值生成一个 url 并发送给用户。

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

    【讨论】:

    • 我使用 $token = substr(base64_encode(sha1(mt_rand())), 0, 64);对于哈希码,但需要一些代码帮助来发送电子邮件并将其检查到数据库中
    猜你喜欢
    • 2015-11-26
    • 2019-12-01
    • 2018-04-27
    • 2011-04-16
    • 2013-12-18
    • 2015-08-13
    • 1970-01-01
    • 2010-11-21
    • 2021-08-05
    相关资源
    最近更新 更多