PHP如何实现同一个账号 在同一时间只能在一台机子上登录?

来源:百度知道 编辑:UC知道 时间:2024/07/04 17:54:01
PHP如何实现同一个账号 在同一时间只能在一台机子上登录?
请提供具体详细的代码,可加满分!

方案一:
可以每次登录的时候生成一个COOKIE密钥记录到数据库并发送到客户端,每次客户端提交的COOKIE都要检查一下那个随机密钥是否与数据库里面的相同即可。
方案二:
将SESSION保存在数据库中,用户登录以后在该用户的用户表中记录 SESSION ID 值,并在SESSION表中将这个用户原来的SESSION ID删除。或者如果SESSION里面有值就不给他登录。

下面的压缩包里面是一个数据库保存SESSION的例子:
http://www.zxingphp.cn/download/PHP_Session.gz

建一个数据表 比如叫 onlineuser
UserName/UpdateTime/UserKey

在用户登录时,记下这个用户的用户名,并生成一个key,存入到他的cookies里,设置失效时间为1天,然后,在一个页面通用文件里,更新UpdateTime为最新时间

另外,页面通用文件中还需要做另一件事,把UpdateTime>10分钟的用户从这个表中删除掉。

然后 在用户登录时加入判定,如果在OnlineUser表中已经有这个用户,检查cookies里的Key是否和数据表中的UserKey相同,相同则允许登录,不同则提示“该用户已经在线,请10分钟后重试”,拒绝登录,并清除掉用户cookies中的Key。而如果OnlineUser表中没有这个用户,则直接允许登录。

用户LoginOut的时候,将他的cookies中的Key要一并清除。

这样可以实现的效果是,一个用户登录后,别人就不能再登,而且即便掉线,他10分钟内也还可以再登。

user表里留个字段 status 登陆上设为1,退出了设为0

每次这样判断下不就行了?