私のログインはユーザー名ではなくメールのみで行われ、パスワードを忘れた場合は「リンク」をクリックしてメールアドレスを入力し、そのメールアドレスがDBに存在するかどうか、存在する場合はそのメールアドレスにメールを送信します。忘れてしまった形を作っていますが、Yii2 Basicは少し新しいので、残りの作り方がわかりません。
私のDBには、フィールドid(AI)、email、password、firstname、secondnameがあります(誰かがこれを必要とする場合)
働いた人にメールを送るために: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('[email protected]')
->setTo($model->email)
->setSubject('Message subject');
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加