1.将验证码保存到session
$request->session()->put('validate_code',$validateCode->getCode());
2.在MemberController中获取session的值
$validate_code_session = $request->session()->get('validate_code','');
if ($validate_code_session != $validate_code) {
$m3_result->status = 8;
$m3_result->message = "验证码不正确";
return $m3_result->toJson();
}
- laravel框架中的session会加密,不要用常规PHP方法获取session,不然比较结果会不一样。
3.配置邮箱环境变量
在.env文件中进行配置
MAIL_DRIVER=smtp
MAIL_HOST=stmp.163.com
MAIL_PORT=25
MAIL_USERNAME=XXXX@163.com
MAIL_PASSWORD=XXX //自己设置的校验码
MAIL_ENCRYPTION=null
image.png
4.调用laravel中 mail::send()接口
Mail::send('emails.reminder', ['user' => $user], function ($m) use ($user) {
$m->from('hello@app.com', 'Your Application');
$m->to($user->email, $user->name)->subject('Your Reminder!');
});
- emails_reminder 邮件提示内容
5.在models中设置email格式
<?php
namespace App\Models;
class M3Email {
public $from; // 发件人邮箱
public $to; // 收件人邮箱
public $cc; // 抄送
public $attach; // 附件
public $subject; // 主题
public $content; //
}
6.在MemberController中调用M3Email
$m3_email = new M3Email;
$m3_email->to = $email;
$m3_email->cc = 'XXXX@qq.com';
$m3_email->subject = "大帅逼验证";
$m3_email->content = '请于24小时内完成验证 http://localhost:8000/service/validate_email'
. '?member_id=' . $member->id
. '&code=' . $uuid;
7.设置UUID
<?php
namespace App\Tool;
class UUID{
static function create($prefix = ''){
$str = md5(uniqid(mt_rand(), true));
$uuid = substr($str,0,8);
$uuid .= substr($str,8,4);
$uuid .= substr($str,12,4);
$uuid .= substr($str,16,4);
$uuid .= substr($str,20,12);
return $prefix . $uuid;
}
}
8.在ValidateController中验证信息
public function validateEmail(Request $request)
{
$member_id = $request->input('member_id','');
$code = $request->input('code','');
if ($member_id == '' || $code == '') {
return "验证异常";
}
$tempEmail = tempEmail::where('member_id',$member_id)->first();
if ($tempEmail == null) {
return "验证异常";
}
if ($tempEmail->code = $code) {
if(time()>strtotime($tempEmail->deadline)){
return "链接失效1";
}
$member = Member::find($member_id);
$member->active = 1;
$member->save();
return redirect('/login');
}else{
return "链接失效2";
}
}