Global.asa代码如下
1<script language="VBScript" runat="server">
2Sub Application_OnStart
3Application("online")=0
4Set Application("conn")=server.CreateObject("ADODB.connection")
5Application("db")=server.MapPath("#class10.mdb")
6end Sub
7Sub Session_OnStart
8
9end Sub
10
11Sub Session_OnEnd
12if session.Contents("pass") then
13Application("conn").open="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Application("db")
14Application.Lock()
15Application("online")=Application("online")-1
16Application("conn").execute("Update [student] Set online=0 where id="&session.Contents("id"))
17Application.UnLock()
18Application("conn").close
19end if
20end Sub
21
22Sub Application_OnEnd
23Set Application("conn")=nothing
24end Sub
25</script>
login.asp部分代码如下
session("id")=rs("id")
session("pass")=true
'使在线人数增加一,标记数据库
Application.Lock()
Application("online")=Application("online")+1
conn.execute("Update [student] Set online=1 where id="&session("id"))
Application.UnLock()
logout.asp部分代码如下
session.Abandon()
response.Redirect("index.asp")
显示在线的人数的代码如下
1<tr>
2<td align="center" height="92" valign="middle">在线人数:```
3 =Application("online")
4```人<br/>
5在线的人:
do while NOT rs.eof
response.Write(rs("name"))
rs.movenext
loop
rs.close
1</td>
2</tr>
问题是如果用logout.asp退出的话,显示的人数和名字的个数是一样的,如果没有logout而是直接关闭ie,显示的人数就比名字个数多了,为什么?
我的数据库文件名就是#class10.mdb,不是class.mdb,如果是正常logout时就不会有问题
---------------------------------------------------------------
session失效需要一定的时间。默认20分钟
---------------------------------------------------------------
logout之前要清空掉你的session先
---------------------------------------------------------------
logout.asp里强制失效了。而直接关闭ie,服务器并不知道用户是否真的离开了
---------------------------------------------------------------
http://expert.csdn.net/Expert/TopicView2.asp?id=1257242&datebasetype=now