我的登录仅使用电子邮件而不是用户名,当我点击忘记密码“链接”并输入一些电子邮件地址以检查数据库中是否存在该电子邮件地址,以及是否存在以向该电子邮件地址发送电子邮件。我做了被遗忘的形式,但不知道怎么做其余的,因为我在Yii2 Basic中有点新鲜
我的数据库有字段ID(AI),电子邮件,密码,名字,第二名(如果有人需要)
答案 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');
}
}