在线富翁的功能怎么实现的(100分)

U

ugvanxk

Unregistered / Unconfirmed
GUEST, unregistred user!
每登陆一个帐号就在一个List增加一条记录,我猜的:)
 
你登陆的时候不就有记录了吗。
 
使用一个动态数组或数据表,每当用户登陆、退出时,进行增删操作。
 
退出时怎么知道退出了,尤其非正常退出(关闭窗口,而不是选择退出论坛)
 
应该是使用Session吧
 
用ASP的话在登录时用一个Application变量来记录,如:
if 登录成功 then
Application("UserList") = Application("UserList")+","+UserName
这样再分析Application("UserList")变量就可以知道在线用户了
最好在Global.asa文件中写,如:
sub Session_OnStart()
Application("UserList")....
end sub
sub Session_OnEnd()
Application("UserList")...
end sub
 
//退出时怎么知道退出了,尤其非正常退出(关闭窗口,而不是选择退出论坛)
Session 有超时的
 
session 好像不是全局的
 
问版主吧!!
 
to:tianjh007
如果用户离开怎样来维护UserList呢?它是一个字符串。
 
上午有事,下午再回答你.其实tianjh007已经说得差不多了.只是缺了断线的检查.
 
我搞定了。
登录时在数据库加一个标记,离开时将将次标记清除。
系统定时去扫描一下数据库。
期间的环节都可以实现,包括离开时清除标记。
在窗口离开时调用。
<SCRIPT language=javascript>
function OnCloseWin(){
// do
cument.B_Data.target="_blank"
do
cument.B_Data.action="OffLine.asp" //调用清除标记的程序。
do
cument.B_Data.submit();
}
</SCRIPT>
使用Application用来计数是没有问题的,但想知道具体是谁在线怎么办?
 
不行,碰到问题了!郁闷。
我的想法出现问题了。对于静态不定时刷新的窗口没有问题,问题出在我定时刷新的窗口。
本想在刷新的时候只去检索在线的标记,关闭窗口的时候去置不在线的标记。
结果好像Asp不能很简洁的实现Refresh和onclose事件,我用<body Onunload=..>结果刷跟关闭
都去置标记。
各位再说说方法。
希望达到象“在线富翁”一样效果。希望了解处理的机制是什么。
 
:),还得麻烦一下。
用户下线,清除的机制是什么?
我把它放到了
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
好像不太灵敏。
我应该怎么做?
 
什么意思
 
用户下线,怎么能及时知道
 
你这样做应该是对的
对于服务器来说是没有办法及时知道用户什么时候没有再浏览网站,
除非你在每一个网页的Unload事件中调用一个新的网页把它的Session强制消灭
但那样也是很不稳定的,我试过在局域网中好像还可以,放到公网上就不行了
所以我们只能用session.Timeout来控制,一般设定为20分钟,
这样只要用户20分钟之内没有再浏览该网站,就会触发session_onend事件
其实打富翁也是这样的,你把浏览器关了重新打开进入大富翁,不要登录直接看在线富翁,
你会看到你还在线
 
to:tianjh007
两个人同时进入大富翁,同事能在“在线富翁”看到我,我现在关闭大富翁,同事那边刷新,可以
很快反映出我已经离线,而我现在通过上面的程序做不到,我离线,对方刷新还是显示我在线。
我应该怎么做?请指教。
 
to:tianjh007,我刚才跟ugvanxk试了一下,还真是如你所说,但我之前试的结果好想不是这样。
我现在的系统是用在局域网上。
是不是也有人采用在数据库设标记的方式?我感觉那样更快速、直接。
 
顶部