1,
设置一个唯一值, session_id()就可以
当用户登录的时候, 将这个值记录到缓存 或者数据库中
每次刷新页面 判断session_id == 缓存中的值
若不等, 清空登录状态值
if(session_id() != $sessionid ){
unset($_SESSION);
}
2,
如果同账号多用户频繁使用, 会造成用户频频掉线的不好体验
所以若有人在线, 可以提示下一用户账号使用中, 是否继续登录
这时候需要多设置两个值
isline 用来记录当前用户是否在线状态
lastlogin_time 和上一次登录时间
当用户登录时候, 将isline设为1, 并记录登录时间, 退出登录时将isline改为0
这样下一用户登录时, 先判断isline的值, 在执行是否可以 直接登录, 或是
alert('提示在线中, 继续登录');
为避免用户不正常退出, 直接关闭浏览器, 或者浏览器崩溃等, 所以需要用到lastlogin_time
若用户登录时, 查询缓存中
isline为在线状态, 可查看lastlogin_time的值, 如果距现在时间比较长, 可以判断为非正常退出, 当前用户可以登录
若isline在线, lastlogin_time 时间较短, 不是正常session失效时间, 可判断用户在线中, 提示账户在线中
if($isline){
if( (time()-$alstlogijn_time)>3600*24 ){
//距离上次登录已超过24小时, 当前用户可以直接登录
}else{
//上一个用户在线中,
//当前用户提示alert('提示在线中, 继续登录');
}
}
当前如果当前用户session_id 与缓存中记录一致的话, 可以无需判断isline lastlogin_time等值, 可以直接登录