原理
第一次登录的时候设置cookie,再次登录的时候先获取cookie进行校验,为了安全起见还要做一些简单的加密。cookie在本地保存,容易泄漏,为了安全可以和本地IP做下绑定,这样就算泄漏在其它电脑上也是登录不了的,当然在同一个局域网内还是可以访问的,同网中也没有人黑你吧。
代码
// 登录成功后设置 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天
第二次登录代码
$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的方法,点击可以查看相应代码。