比如a账号在a电脑或a浏览器上登录后,如果a账号又在b电脑登录,则a电脑上会自动检测并退出登录.
思路是点击登录后,把session或时间值保存在数据库或txt文本中,并同时保存在每个用户的浏览器中,如果账号在另一处登录,则更新数据库或txt中的sessionid值.
这时,只要实时比对浏览器中保存的session与数据库中的是否一致即可.
比如保存在会员id.txt中为例.
日志为 login_log/13.txt,里面保存sessionid的值.
其中13表示会员id ,另外,浏览器的session中保存用户的uid 比如13
public function login() {
if (is_login()) {
$this->redirect('index/index');
}
$request = \think\Request::instance();
//var_dump($request->isPost());exit;
if ($request->isPost()) {
$data = input('param.');
$user = $data['username'];
$pwd = $data['password'];
$has = db('user')->where('username', $user)->find();
(empty($has) || $has['password'] != md5($pwd)) && $this->error("用户名或密码错误");
file_put_contents('login_log/'.$has['id'].'.txt',session_id());
session('uid', $has['id']);
$this->success("登录成功", "index/index");
} else {
return view();
}
}
判断是否登录的函数为
function is_login(){
$session_id=file_get_contents('login_log/'.session('uid').'.txt');
if($session_id==session_id()){
return session('uid');
}else{
return 0;
}
}
在需要检测是否是登录状态的页面加上
if (!is_login()) {
$this->success("请重新登录", "publics/login");
}
https://blog.csdn.net/weixin_40047834/article/details/80938168
更多内容欢迎关注微信订阅号:phpstory