思路一:
需要一个session id,与用户信息绑定。
比如3L的说法,在users表内加一个sessionId字段,在用户访问时将cookies里面的sessionId与数据表里的sessionId比较下,不同就是非法访问,这时候踢下线就是把sessionId置空。
也可以单独创建一个 sessions 表,在里面记录用户ID与对应的session id ,登陆时查询下记录——这样的好处是支持多个地方同时登录同一个用户。T下线的方法是删除sessions表里对应的session id或用户ID。
php session_id()用法代码举例如下:
<?php
session_start();
echo session_id();
// 输出 08nr1fav9jqs2pdi5qlpsmd247
?>
设置 session_id()详细代码:
<?php
session_id("www.169it.com");
session_start();
echo session_id();
// 输出 www.169it.com
?>
实例代码:
https://blog.csdn.net/qq_28761593/article/details/60960068?utm_source=blogxgwz0
思路二:
登录成功后,用户表中记录last_login_time 为当前时间,并写到session中。后台判断登录状态的时候,需要从数据库中读取最近一次登录时间,加入到判断条件中,即每次判断都要读一次。假设当前帐号A1为登录状态,如果此帐号A2在异地登录,必然会刷新last_login_time这个字段,那么当前账号A1在判断登录状态的时候,就会存在last_login_time这个字段的值与session个中记录的值不一致的情况。
思路三:
登入時記錄登入時間與登入ip,根據ip判斷地點。
如果登入地點與上次登入地點不同,且兩次登入時間在一定時間內,則通過站內信息系統提示上一次登入的用戶,被下線。