检查数据库中是否存在电子邮件,如果存在,则使用哈希码Yii2 Basic发送重置密码的电子邮件

时间:2016-07-18 12:33:39

标签: yii2

我的登录仅使用电子邮件而不是用户名,当我点击忘记密码“链接”并输入一些电子邮件地址以检查数据库中是否存在该电子邮件地址,以及是否存在以向该电子邮件地址发送电子邮件。我做了被遗忘的形式,但不知道怎么做其余的,因为我在Yii2 Basic中有点新鲜

我的数据库有字段ID(AI),电子邮件,密码,名字,第二名(如果有人需要)

1 个答案:

答案 0 :(得分:0)

用于向工作人员发送电子邮件:在SiteController中

public function actionForgot() {
    $model = new ForgotForm();
    if ($model->load(Yii::$app->request->post()) && $model->validate()) {
        if ($model->sendEmail($model->email)) {
            Yii::$app->session->setFlash('success', 'Check your email for further instructions');
            return $this->goHome();
        } else {
            Yii::$app->session->setFlash('error', 'Sorry,we are unable to reset your password for email provided');
        }
    }
    return $this->render('forgot', ['model' => $model]);
}

和ForgotForm:

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')
                ->setFrom('rosensoul@gmail.com')
                ->setTo($model->email)
                ->setSubject('Message subject');

    }
}