有关在线名单

雪域幽狐 2003-08-14 00:00 阅读:5719


    网上有很多关于在线名单的代码,我参考一些书籍,使用dictionary纪录在线用户名单


    dictionary(字典)是scripting的对象,因为dictionary在Session_Onstart之前创建才能纪录,所以在Global.asa中创建。
    在Session_Onstart时,由于用户未登陆,因此在Session_Onstart这里只能把在线用户人数加1,然后在用户登陆社区时再把用户名写入dictionary,用一个页面online.asp显示在线用户,超时或用户退出时,把dictionary中的用户名去掉。
下面给出上文提到的代码
********************Global.asa******************



<object runat=server scope=application id=onlineusername progid="scripting.dictionary">
</object>
<script language=vbscript runat=server>
Sub Session_Onstart
Session("flag")=0
Session.timeout=20
application.lock
application("usernumber")=application("usernumber")+1
application.unlock
End Sub


Sub Session_OnEnd
onlineusername.remove session("loginame")
application("usernumber")=application("usernumber")-1
End Sub
</script>


check.asp,用户登陆社区检测文件,这里只给出把用户名加入dictionary片断
******************check.asp********************


<%
if not onlineusername.exists(loginame) then
    onlineusername.add loginame,loginame
end if
%>

*****************online.asp*******************


<%Dim key,i
key=onlineusername.keys%>
在线人数:&nbsp<font color="red"><%=application("usernumber")%></font>&nbsp人<br>
其中注册用户人数:&nbsp<font color="red"><%=onlineusername.count%></font>&nbsp人<br>
<%for i=0 to onlineusername.count-1 %>
<font color=green>***</font>
<a href="look.asp?key=<%=key(i)%>"  target = "_blank" >
<font color=blue><%=key(i)%></font></a>&nbsp;<font color=green>***</font><br>
<% next %>

用户退出时直接用session.abandon立即执行Sub Session_OnEnd中的代码,把用户名从dictionary中去掉。


2条评论

翼狼 2004-08-25 16:58
[em4][em1]

03wuli 2005-12-18 14:40
[em4]

登陆后可评论