寓意好的英文短句纹身:ASP编写在线人数问题

来源:百度文库 编辑:高校问答 时间:2024/04/30 17:08:34
我写了个GLOBAL.ASA文件,代码如下
<script language="vbscript" runat="server">
sub application_onstart
number=0
end sub
sub session_onstart
application.lock
application("number")=application("number")+1
application.unlock
end sub
sub session_onend
application.lock
application("number")=application("number")-1
application.unlock
end sub
</script>
又写了INDEX.ASP,内容为<%=application("number")%>
都存在网站根目录下,但运行时在线人数只会增长,其它用户关闭流览器后显示人数仍然没有减少,怎么回事呢?
这段代码在书上也是这么写的,哪位乐意告诉我正确写法吗

不一定一关闭网页人数就减少.其默认的连接等待时间是20分钟

<script language="VBScript" RUNAT="Server">
sub application_OnStart
application("ActiveUsers")=0
end sub
sub session_OnStart
session.Timeout=20 默认为20分钟
application.lock
application("ActiveUsers")=Application("ActiveUsers")+1
application.unlock
end sub
sub Session_OnEnd
application.lock
application("ActiveUsers")=Application("ActiveUsers")-1
application.unlock
end sub
</script>
将以上内容存为global.asa文件,并放在你网站根目录下.

<%
Dim Cnn
Set Cnn = Server.CreateObject("ADODB.Connection")
Cnn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("你的数据库路径")

dim uip,uie
uip = Request.ServerVariables("remote_addr")
uie = request.servervariables("http_user_agent")

dim rs1,jsqsql,jsqtype

jsqtype = "2"

Rem 这里选择计数方式
Rem jsqtype = "1",每刷新一次,计数+1
Rem jsqtype = "2",每访问一次计数+1,刷新不增加
Rem jsqtype = "3",每一IP,一日之内只记录一次,再次访问,刷新均不增加

if jsqtype="1" then
jsqsql = "insert into jsq (visitdate,visittime,userip,userie) values (date(),time(),'"&uip&"','"&uie&"')"
cnn.execute jsqsql
set jsqsql = nothing
elseif jsqtype="2" then
if session("jsqhascount")<>"hascount" then
jsqsql = "insert into jsq (visitdate,visittime,userip,userie) values (date(),time(),'"&uip&"','"&uie&"')"
cnn.execute jsqsql
set jsqsql = nothing
session("jsqhascount")="hascount"
end if
elseif jsqtype="3" then
set rs1 = Server.CreateObject("ADODB.RecordSet")
rs1.open "select id from jsq where visitdate=#"&date()&"#",cnn,1,1
if rs1.eof then
rs1.close
set rs1=nothing
jsqsql = "insert into jsq (visitdate,visittime,userip,userie) values (date(),time(),'"&uip&"','"&uie&"')"
cnn.execute jsqsql
set jsqsql = nothing
end if
end if

dim jsq,totalhits,Length
set jsq = Server.CreateObject("ADODB.RecordSet")
jsq.open "select id from jsq",cnn,1,1
totalhits = jsq.recordcount
jsq.close
set jsq=nothing

cnn.close
set cnn=nothing

Length = Len(totalhits)
do until length >= 6
totalhits = "0" & totalhits
length = length + 1
loop
for i = 1 to Length
%>
document.write('<img src="js/<%=Mid(totalhits,i,1)%>.gif" border="0">');
<%
next

%>
将以上存为JSQ.ASP文件,放在根目录下.
然后建立js文件夹,里边存10个图片,GIF格式,分别是0到9 ,文件名为:0.gif一直到9.gif.
在你网页需要的地方加入;
<div align="center"><font color="#FF0000">您好,第</font>
<SCRIPT src="jsq.asp"></script>
<font color="#FF0000">位来宾! 当前在线:
<% =Application("ActiveUsers")%>
人!</font></div>
即可!

因为用户关闭浏览器后结束的session是客户端的并不是服务器端的,所以你判断不出来的,你的写法不正确,应该试一试别的方法,比如给用户加一个在线否的字段用这个来统计