怎样限制一个用户ID在登陆以后在其他电脑上用这个ID就不能登陆了?

cmlzycm 2005-11-24 09:05:49
一个用户ID在登陆了以后,其它的电脑再用这个ID登陆的时候,会被拒绝登陆或者得到提示:这个用户正在使用。谢谢哦!
...全文
224 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ybfqlyq 2005-11-24
  • 打赏
  • 举报
回复
支持樓上的。
moodboy1982 2005-11-24
  • 打赏
  • 举报
回复
2楼和4楼的方法可行。
考虑到你要的并不是实时,不然可以用HttpXML.
在这里用SessionID更合适。
eduxh 2005-11-24
  • 打赏
  • 举报
回复
设置一字段,默认为0(未登陆),当用户登陆后就把该字段设为1,这样每次用户登陆就可以根据该字段来判断了
clbaddd 2005-11-24
  • 打赏
  • 举报
回复
楼上的办法基本可行,其实你可以在数据库中记录下用户的SessionID,如果出现意外掉网之类的,在Session_OnEnd中进行操作,把数据库是字段值等于当前SessionID的记录更新,使其处于未登录状态.这样就可以避免出现意外而无法再次登录的情况
竹林听雨2005 2005-11-24
  • 打赏
  • 举报
回复
1.在用数据库的用户表中增加字段SessionID此字段在用户登陆时写入Session.SessionID.登出时清空。以此来判断此用户是否已经登陆。

2.用户的登出,如果用户主动登出。直接执行Session.Abandon。由Session_Onend来完成登出操作。(这里的数据库SQL应当是判断SessionID而不是用户名。原因是离线可能是由于被踢出而导致的。UPDATE Table SET SESSIONID ="" WHERE SESSIONID = Session.SessionID)

3.如果用户非主动登陆,那么当超时时也将由Session_Onend来完成登出操作。

4.用一个用户验证机制。如果用户请求页面时用户表中的SessionID与自己的不符。则说明自己被踢出。执行离线操作。因为是被踢出所以不作数据库的更新操作。(明白2中为什么要判断SessionID了吧。)

5.上面的4步已经能够完成所需的功能,但有些问题。
A,用户每次请求都需要查看用户表的SessionID字段,无形中增加一次数据库操作。这个问题 可以用(a)仅在关键操作页检查(b)将SessionID转存在Application中或其它优化方式来解决。
B,完善的密码保护功能。由于用户登陆可以互踢。所以密码保护成为解决身份验重要手段。(密码保护只能重新设定密码,而不能查询。)
C,连续登陆锁定。如果一个用户在短时间内连续登陆多次,可以证明这个用户存在互踢。那么应当锁定这个用户账号要求用密码保护重置密码。
xtuwz 2005-11-24
  • 打赏
  • 举报
回复
session变量,cookies都不错
damboo 2005-11-24
  • 打赏
  • 举报
回复
在数据库的用户表加一个hasLogin字段,用户登录时判断一下,如果已经是true则不能登录
如果是false则登录并改成true
比较麻烦的一点是用户退出的时候,必须把它再改成false
当然,用户如果老老实实点了“退出”按钮,那还比较好办,如果直接关掉浏览器(其实这种情况可以在onunload里弹出一个logout.asp小窗口,然后让它自己关闭,应该没有问题)或者意外断线的情况,就没法更新字段,会导致以后都登录不了
所以估计还得加上一个字段,记录用户最后一次活动的时间,登录时加上一个判断
如果hasLogin是false,或者最后一次活动的时间已经过了20分钟(可以设置),那么就允许登录
否则,认为是重复登录

方法不是很好,仅供参考
huguang 2005-11-24
  • 打赏
  • 举报
回复
http这种协议就不可能有完美的解决办法!难度比较大!
qoo1983 2005-11-24
  • 打赏
  • 举报
回复
建立的user表中最后一个state栏位,默认是N,
当登录的时候会
sql="Select * from user where username='登录名'"
set rs=connection.execute(sql)
if not rs.eof then
if rs("state")='N' then
sql="update user set state='Y' where username='登录名'"
set rs1=connection.execute(sql)
else
response.write("<scrip>alert('此用户正在使用中,请选择其他用户名');histroy.go(-1)</script>")
end if
else
response.write("<scrip>alert('无此用户名,请注册!!');histroy.go(-1)</script>")
end if

试试看,不知道javascript那段还对,反正这样可以实现啦

hfkj 2005-11-24
  • 打赏
  • 举报
回复
判断是否登陆
cmlzycm 2005-11-24
  • 打赏
  • 举报
回复
楼上诸位的理论都是高见,哪位方便的话把具体的代码写出来看看,我是初学者,给大家添麻烦了。

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧