------ 如何保证在同一时间内每个用户只允许一次登录系统。(以外退出如何处理)在线等待 谢谢------

luckyhqh 2004-06-22 10:07:23
即如果有用户用一工号已经登陆了,别人就不能用相同的工号登陆,除非先登陆的那人下线。
我现在做了正常的退出都没有问题。
我的做法是,登陆成功后就标记该用户已经登录。
而退出就把该标记去掉,另外在Session_onEnd中也已经把该标记去掉但现在关键是用户如何意外关机,这时候只有等Session结束掉才能触发该事件。这段时间内用户就不能登陆这样肯定不行的有没有什么好的办法?
...全文
270 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jonas401 2004-07-02
  • 打赏
  • 举报
回复
www0aspsun0com(源码联盟)的方法可行,不过刷新的频率太高了,再好的服务器都得趴下

不要设隐藏页面,每次页面跳转的时候更新一下最近活动时间就行了
更新的同时判断那些在线用户的最后更新时间与当前时间对比,如果超过了20分钟就把他设为下线,删除或更新相应的记录

目前来说,这种方法是比较合理的,因为在线统计不可能百分之百精确,都有一定的误差,而且这个统计值又不是至关重要的
会织网的蚂蚁 2004-07-02
  • 打赏
  • 举报
回复
在用户退出系统之后,记录用户退出的时间,如果下次登录的时候,把时间取出来。和现在的时间相比较,算出用户在多长时间不能登录。 datediff
cometzg 2004-06-22
  • 打赏
  • 举报
回复
一般来说,进用户进行控制就 是用Session,如果死机从别的电脑上登录的话,不一定要精确到这边掉线那边马上就能登录。可以缩短这个过程,比如,设置每6分钟查询一个Session 是否还有效,等6分钟应该不算长。
otoexpert 2004-06-22
  • 打赏
  • 举报
回复
看看我的想法是否行得通:
在数据库里设立一个表,记录各个工号的登录信息LogonInfo:
ID,LogonTime,ClientIP
在关机等非正常退出的情况下,从别的PC上无法使用该帐号,当该ID用户的PC恢复正常后,即可正常登录
If (SELECT COUNT(*) FROM LogonInfo WHERE ID = '登录者的ID' AND ClientIP <> '登录者的IP') = 0 THEN 允许登录
另个,需给系统管理员开个后门,以防止用户机器损坏等灾难性情况。
moonyli 2004-06-22
  • 打赏
  • 举报
回复
这个问题已经很多人讨论过,我也在想办法解决,你可以搜索一下,不过我认为那些办法都不是怎么好,
www0aspsun0com 2004-06-22
  • 打赏
  • 举报
回复
实在没有什么好办法

你要是不介意消耗资源的话,可以包含一个隐藏页面,每秒自动刷新,这个页面的功能就是记录该用户的帐号以及这次刷新的时间。

登陆的时候,判断用户最后刷新时间在5秒以内,就认为该用户在线(他重起电脑怎么也超过5秒吧),反之,就认为他不在线。

隐藏页面的刷新时间可以根据实际情况设置为10秒或者60秒刷新一次!


以上是我的拙见,希望与大家交流交流!
netying 2004-06-22
  • 打赏
  • 举报
回复
以外关机的问题是没有办法的,只能如此了。
session一般默认是20分钟,可以忍受
guying999 2004-06-22
  • 打赏
  • 举报
回复
可以在数据库里设置一下,如果改工号登陆设置标志为,下线后取消标志。
CALM 2004-06-22
  • 打赏
  • 举报
回复
应该没有别的办法了吧。。。
你的session能存在多长时间?

28,391

社区成员

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

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