Global.asa有什么问题?

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&amp;datebasetype=now

Published At
Categories with Web编程
Tagged with
comments powered by Disqus