我想知道谁在线。。。。。。。。(50分)

  • 主题发起人 主题发起人 天与地
  • 开始时间 开始时间

天与地

Unregistered / Unconfirmed
GUEST, unregistred user!
不行,碰到问题了!郁闷。
我的想法是在登录时就置一个标记,说明在线了,离开时清除标记。
我的想法出现问题了。对于静态不定时刷新的窗口没有问题,问题出在我定时刷新的窗口。
本想在刷新的时候只去检索在线的标记,关闭窗口的时候去置不在线的标记。
结果好像Asp不能很简洁的实现Refresh和onclose事件,我用<body Onunload=..>结果刷跟关闭
都去置标记。
各位再说说方法。
希望达到象“在线富翁”一样效果。希望了解处理的机制是什么。
 
你和ugvanxk好像是一个人噢!呵呵!
其实我觉得你昨天问时我说的就应该可以啊!我以前都是那么做的,
在局域网内的网站上基本上没有问题,只是象magic6326说的缺少断线的检查
在那里边我说的用了Application("UserList")变量来记录,比如
在Login.asp文件中
if 登录成功 then

Session("ID") ="fdsafd"
这个时候就会触发Global.asa文件中的Session_OnStart()事件
在Global.asa文件中
sub Session_OnStart()
if Application("UserList") 中有 Session("ID") then
对Application("UserList")不作操作
else

Application("UserList")=Application("UserList")+","+Session("ID")
end sub
sub Session_OnEnd()
在Application("UserList")中去除Session("ID")
end sub
这样在Application("UserList")中就以 , 分隔开各个在线用户,
在需要用到的时候按照 , 把各个用户名取出来就可以了,
由于用户可能会断线所以要设置Session的有效时间
 
我们是同事。:)
昨天的问题是他帮我提的。
 
ok,tianjh007,是你说的办法,我昨天担心的是怎样去检索、剔除。
我找了一的原码,application("UsersList")=Replace(strLists,endCode,"")
他说的方法跟你相似,有自动剔除的机制。我试试。
搞定后就送分。
 
实在搞不定我可以帮忙,多给点分就成!呵呵!
 
to tianjh007
if Application("UserList") 中有 Session("ID") then

的具体格式怎么写?
 
instr函数
if instr(Application("UserList"),Session("ID").Value)>0 then
 
ok,谢谢了。
周末快乐。
 
不用客气
周末快乐
 
to tianjh007
<SCRIPT LANGUAGE=VBSCRIPT RUNAT=SERVER>
SUB APPLICATION_ONSTART
application("online")=0
application("UsersList")=""
END SUB
sub application_onend
application("online")=0
application("UsersList")=""
end sub
sub session_onstart
session.Timeout =200
session("on_line")=false
str_Lists=application("UsersList")
end_Code=",'"&amp;session("E_ID")&amp;"'"
if not InStr(str_Lists,end_Code)>0 then
application.Lock
application("UsersList")=Application("UsersList")+end_Code
application.UnLock
end if
end sub
sub session_onend
strLists=application("UsersList")
endCode=",'"&amp;session("E_ID")&amp;"'"
if InStr(strLists,endCode)>0 then
application.Lock
application("UsersList")=Replace(strLists,endCode,"")
application.UnLock
end if
end sub
</SCRIPT>
我需要检查E_ID是否在线。上面是我在global.asa里面的代码。
可是程序里面显示application("UsersList")只有‘,’没有E_ID。
我这样写对吗?
 
我的E_ID是数字型变量。我的session("E_ID")没有放在Login.asp中,有影响吗?
 
我现在感觉在global.asa中Session("E_ID")没有赋进去,“,”进去了。 我在验证完用户的身份后,就
给Session("E_ID")付值了。
 
OK了,我应该把application("UsersList")=Application("UsersList")+end_Code
放在外面。搞定了。
 
接受答案了.
 
:),还得麻烦一下。
用户下线,清除的机制是什么?
我把它放到了
sub session_onend
strLists=application("UsersList")
endCode=",'"&amp;session("E_ID")&amp;"'"
if InStr(strLists,endCode)>0 then
application.Lock
application("UsersList")=Replace(strLists,endCode,"")
application.UnLock
end if
end sub
好像不太灵敏。
我应该怎么做?
 
后退
顶部