php 如何防止同一帐户多个用户登录

来源:互联网 发布:noc网络中文教师 编辑:程序博客网 时间:2024/05/16 08:57

网站用的人多起来了,就想到应该增加这么一个功能。 起初想的是当一个用户登录了以后,如果有其他用户再登陆就拒绝。但是这个功能很难实现,因为b/s 是无连接的, server端根本不知道客户端当前的状态。唯一的方法就是给session增加一个timeout。这个方法虽然可行,但还是不是很好,对用户不友好。

后来在网上找了一下,发现了一个好方法。其实需求就是防止多台电脑用一个帐户同时登陆,那么可以换个思路,每次新用户登录,就把此帐号以前登陆的用户给踢出去。实现方法就是给每个账户关联一个唯一的标志,可以是sessonid,但用户登录时,就更新sessionid。 用户每次操作时首先检查当前帐户关联的sessionid是否和自己的相等,若不相等则强制用户退出。 这个方法在jsp上实现比较方便,有一个application类,每个会话可通过这个类存储整个服务器端范围的变量, 但是php没有这个东西。 所以几中可行的方法是通过文件,数据库,共享内存。 其中数据库实现最方便,因为多线程同步已经在数据库里解决了,代码里不用考虑这些东西了。

原创粉丝点击