首先郵箱驗證,無非就是現在挺常見的一種驗證方式,判斷你有沒有權限登陸,或者是否有權執行下一步等等
思路: 現在做的是一個注冊,當注冊完成之後,我們會向郵箱發送一個連結,點選這個連結之後才有權限登陸,我在資料庫設定了一個token,當建立賬号完成之後,存到資料庫一個加密的郵箱格式,然後做判斷 接下來我做一個簡單的供參考
代碼如下 這是注冊發郵件的一個流程 用laravel裡面的Mail 先use引入一下Mail use Mail
public function send_reg(Request $request)
{
// 判斷頁面
if($request->isMethod('post')){
// 擷取全部
$rel = $request->all();
// SQL語句檢視手機号
$tel = DB::table('pl_user')->where('tel',$rel['tel'])->first();
// 判斷是否手機号重複
if($tel){
return "手機号已注冊";
}else{
//擷取表的字尾
$file = $request->file('file');
// 傳回上傳檔案的擴充名稱
$ext = $file->getClientOriginalExtension();
// 給圖檔一個時間+随機數字首
$filename=date('Y-m-dHis').rand(111111,999999).'.'.$ext;
// 建立存圖檔目錄
$path=$file->move("./senduser/",$filename);
// 轉義
$arr['username']=$rel['username'];
$arr['pwd']=md5($rel['pwd']);
$arr['tel']=$rel['tel'];
$arr['email']=$rel['email'];
$arr['file']="/".$filename;
$arr['token']=md5($rel['email']);
// 添加執行
$info = DB::table('pl_user')->insert($arr);
// 發郵件
if($info){
$email = $rel['email'];
$token = $arr['token'];
$url = "http://www.laravel55.com/checkMail?token=$token";
Mail::send('sendlogin.emailindex',['url'=>$url],function($message)use ($email){
$message->from('[email protected]','評論中心');
$message->subject("歡迎您,注冊成功");
$message->to($email);
});
return redirect('send_login');
}else{
return "郵箱發送失敗";
}
}
}else{
return view('sendlogin.send_reg');
}
}
接下來是郵箱驗證的方法
//校驗郵箱token
public function checkMail()
{
//接收傳遞過來的token
$token = $_GET['token'];
$res = DB::table('pl_user')->where('token',$token)->first();
if(empty($res)){
return redirect('send_login');
}else{
$id = $res->uid;
$res = DB::table('pl_user')->where('uid',$id)->update(['token'=>'']);
return redirect('send_login');
}
靜态頁面
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<table >
<h1><i>恭喜您,注冊成功</i></h1>
<h2>請點選一下連接配接進行激活賬号</h2>
<br/>
{{$url}}
</table>
</body>
</html>