维持一个登陆列表。
接楼上的,需要有一张表存放用户登陆状态,或者说在你目前的用户信息表中加一个登陆状态存储字段,用户账号登陆后就存储登陆状态,用户退出后就更改状态,当下一位用户使用同一个账户登录时先判定用户是否登录,如果已经登录,就清除掉前一位登陆用户...
服务端
维护一个登陆用户的列表,需要由一个唯一的标示:
如:userID ,GUID(唯一标示),lastupdatetime
用户登陆的时候:先检测列列表,如果userid存在的话,将这一列删掉
之后:
生成一个GUID,并且将GUID写到cookie里面去。
客户端:
ajax轮询,没几秒钟将当前用户信息(userid,guid发到服务器),如果信息不在集合里面(同时跟新状态),则提示掉线,关闭浏览器或直接跳出。
这只是大概思路,怎么做都行,如果不用及时通知的话,不用ajax轮询也可以,节约资源,不过这样不能够及时跟新用户状态
状态维护问题:
客户段可能会关闭浏览器,或者直接停电,当时服务端记录了用户还是登陆者的,这样就会出现问题。我们可以在body的onunload事件里面回调删除记录,但是页面之间的跳转就会出现问题的。
ajax轮询的时候,跟新列lastupdatetime,如果lastupdate列长时间的没有更新,那就可以当成掉线,不过轮询太占用资源,不知道优美更好的办法
LS 的应该可以给你些意见
我给你个思路
用户登陆后 创建个随机码,加上用户的ID ,保存到 cookies
数据库中用户表 放两个字段,分别保存随机码和用户登陆时间
前台 用js 一直更新 数据库中的 用户登陆时间,并判断cookie内的 随机码和数据库中是否一直
随机码不一致或者本地时间和数据库的时间差别超过一定时间 则将 该机子的用户cookie设置过期。
表示当前用户登出 或者 其他用户登录该账户
应该就是 单点登录吧
引用第N楼,在登录成功后调用方法对数据库查询一下数据库当前值,如果还登录呢就把他断掉就行了,然后下一个同账号登录一样,这样就可以实现来回挤。。。