原理
第一次登錄的時候設置cookie,再次登錄的時候先獲取cookie進行校驗,為了安全起見還要做一些簡單的加密。cookie在本地保存,容易泄漏,為了安全可以和本地IP做下綁定,這樣就算泄漏在其它電腦上也是登錄不了的,當然在同一個局域網內還是可以訪問的,同網中也沒有人黑你吧。
代碼
codelayui.code
- // 登錄成功后設置 cookie
- $ip = get_real_ip(); // 獲取客戶真實的IP,下面有介紹
- $token = md5($pass . $ip); // $pass 為用戶的密碼,和真實的IP做一個簡單的MD5加密
- cookie("username",$username,604800); // 7天
- cookie("token",$token,3600*24*7); //7天
第二次登錄代碼
codelayui.code
- $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登錄狀態
- $this->redirect("/admin",301); // 跳轉到后臺頁面
- }
- }
- // 其它邏輯自行腦補。
說明
get_real_ip()是自定義獲取真實IP的方法,點擊可以查看相應代碼。