原理
第一次登錄的時(shí)候設(shè)置cookie,再次登錄的時(shí)候先獲取cookie進(jìn)行校驗(yàn),為了安全起見還要做一些簡單的加密。cookie在本地保存,容易泄漏,為了安全可以和本地IP做下綁定,這樣就算泄漏在其它電腦上也是登錄不了的,當(dāng)然在同一個(gè)局域網(wǎng)內(nèi)還是可以訪問的,同網(wǎng)中也沒有人黑你吧。
代碼
// 登錄成功后設(shè)置 cookie $ip = get_real_ip(); // 獲取客戶真實(shí)的IP,下面有介紹 $token = md5($pass . $ip); // $pass 為用戶的密碼,和真實(shí)的IP做一個(gè)簡單的MD5加密 cookie("username",$username,604800); // 7天 cookie("token",$token,3600*24*7); //7天
第二次登錄代碼
$username = cookie("username"); $token = cookie("token"); $ip = get_real_ip(); $user = UserModel::where("username",$username)->find(); if ($user) { $pass = $user->pass; $t = md5(pass . $ip); if ($t == $token) { session("username",$username) // 記錄session登錄狀態(tài) $this->redirect("/admin",301); // 跳轉(zhuǎn)到后臺頁面 } } // 其它邏輯自行腦補(bǔ)。
說明
get_real_ip()是自定義獲取真實(shí)IP的方法,點(diǎn)擊可以查看相應(yīng)代碼。