小弟菜鸟一个,问一个问题,请帮忙。

jianlinlong 2002-10-26 11:12:32
有一个系统,要求一个会员只能同时在一台机器上使用。如何实现?

我设想是用一个字段,会员登录时就将该字段置为1(这个可以在会员点击”Login"的时候实现。如果这个字段的值是1就表示以登录了,不能再登录)。再设一个按钮,会员退出时就点击该按钮(这个按钮里面写代码,将该字段置为0)。问题来了,如果会员不点击那个按钮而关闭IE,那这个用户不是再也不能登录了吗?在Session_OnEnd事件里写,好像也不行。

我该怎么办?
...全文
22 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
colee 2002-11-04
  • 打赏
  • 举报
回复
总结:
应该是在Session中完成最合适!
jianlinlong 2002-11-01
  • 打赏
  • 举报
回复
谢谢各位了。

不知道有没有高手有好办法?
chonboy 2002-11-01
  • 打赏
  • 举报
回复
用框架来做,主内容在另外一个框架页面中显示
这样就减少了客户刷新操作造成的问题

目前好象还没有哪个方法完全解决那个问题
没法,世界上除了女人就算客户难伺候啦
将就吧,老兄
LoneHome 2002-10-31
  • 打赏
  • 举报
回复
还有个比较费资源的方法:
用数据库或session变量存储一个登陆时间,让页面隔10秒刷新一次,做判断,如果当前时间-session时间<=10秒,则用户在线,并存入当前时间。如果
当前时间-session时间>10秒,则说明用户离开了该页面
jianlinlong 2002-10-31
  • 打赏
  • 举报
回复
to chonboy(一只来自南方的羊) :
windows.onbeforeunload是可以了,谢谢。可是还有一个问题,如果用户点击“刷新”按钮,这个事件也会触发,这样还是达不到要求。

还有别的方法吗?
foglee 2002-10-31
  • 打赏
  • 举报
回复
靠~!!!用<body unload="LogOut.asp">不就可以了???
在LOGOUT.ASP中将该字段值改为0
LoveLonghair 2002-10-31
  • 打赏
  • 举报
回复
你下个聊天室的代码研究研究。
jianlinlong 2002-10-31
  • 打赏
  • 举报
回复
谢谢楼上。
楼上的方法有一定的可行性,可是如果他的网速较网的话,不就。。。
mingday 2002-10-30
  • 打赏
  • 举报
回复
恩,有理
chonboy 2002-10-30
  • 打赏
  • 举报
回复
window.onbeforeunload
chonboy 2002-10-30
  • 打赏
  • 举报
回复
wpmsoft(红旗下的蛋)
提到的Session_OnStart和Session_OnEnd应该分别是Application_OnStart和Application_OnEnd

再加上 jianlinlong(楚 潇) 提到的异常情况的处理

当用户关闭窗口的时候,自动新开一个窗口A,窗口A中完成用户注销并关闭窗口A
jianlinlong 2002-10-29
  • 打赏
  • 举报
回复
谢谢各位。

请问:Session_onstart是在什么时候触发?据我所知,是在用户在进入系统时就触发了。这里能知道是哪个用户名吗?

iis中 默认 Session是20分钟 、到时这个Session就 "game over"了。各位,谁做过在线用户?难道你做的在线用户系统都是在 Session_start和 Session_end事件里相应代码就OK了吗?当你的一个用户关闭浏览器后,你”在线用户系统“就能马上显示它下线吗?当然了,如果让你的用户点一个按钮后再关闭浏览器,谁都能做到这个功能,问题是他不点你那个“退出”按钮而直接关闭浏览器。。。

有实点经验的请 Help Me, 小弟愿开出1000分。
wpmsoft 2002-10-28
  • 打赏
  • 举报
回复
To jianlinlong(楚 潇):

在session_onEnd中有要用Session变量来判定用户是否在线!!!请用数据库或者Application变量来记录!建议用数据库,用Application变量较为占用资源!

思路:
在session_onstart中将用户名写入到某个变量中,可以用字符串,用一特殊符号分隔

在session_onEnd中将此用户名从字符串中删除,表示此用户已下线或者超时

在login的时候,判定用户名是否在字符串中存在。如果存在,则表示已经登录且目前在线,不允许其进行登录;否则,。。。。

用数据库的方法基本相同,你可以自己发挥一下!
chonboy 2002-10-28
  • 打赏
  • 举报
回复
wfnuser(夏雪)和 progame(这个年轻人虽然资历低,但是...) 的方法比较适用
其他办法就搞复杂了
jianlinlong 2002-10-28
  • 打赏
  • 举报
回复
有没有人研究过?
jianlinlong 2002-10-28
  • 打赏
  • 举报
回复
sub session_onstart
end sub

sub session_onEnd
session("UserName") = ""
end sub

假设我在程序里判断如果 Session("UserName")是 "123",则不允许登录。如果一个会员登录了(我将Session("userName")="123"), 他一直在线长达 25钟,当 20分钟后Session将触发 OnEnd事件,那第21分钟后该会员帐号是不是可以在另外的机器上使用了?还有,如果一个会员登录了,过1分钟后它的机器死机,它想再登录时 Session("username")还是"123"的值,他岂非要等 19份钟后才能再次登录。难,
jadesun 2002-10-28
  • 打赏
  • 举报
回复
在Session_OnEnd事件里写,是可以的,你可以进行尝试。这个就是session超时或结束激发的事件。
mtide 2002-10-27
  • 打赏
  • 举报
回复
请问在global.asa能处理数据库吗?
uusong 2002-10-27
  • 打赏
  • 举报
回复
用seesion的on_start与on_end事件就足亦搞定了,当然要把这些代码写在global.asa
julyclyde 2002-10-27
  • 打赏
  • 举报
回复
步骤1:给用户在windows里创建一个帐户名
2:锁定该帐户到某机器
3:用request("logon_user")实现身份验证
加载更多回复(3)

28,390

社区成员

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

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