问题描述:
我想知道我的网页总共有多少人访问
但是不知道怎么写代码
要用到后面计术么???
谁知道给提拱源代码给我。。
我会加分的哈~~
解析:
*global.asa文件:
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Session_OnStart
End Sub
Sub Session_OnEnd
End Sub
sub Application_OnStard
End Sub
sub Application_OnEnd
End Sub</SCRIPT>
当有一个会话发生时(用户浏览网页,向Web服务器发出请求)那么,如果自服务器启动后第一个用户的话,就会同时发生Application_OnStard和Session_OnStart这两个事件,之后,再有别的用户发出请求的话,就只发生Session_OnStart这个事件,而session的生存期是多长,是可以设定的,Session.timeout=X(分钟)
好了,有了这个很好用的方法,我们就能准确地统计出在线人数了,而人数总计是用一个application变量来保存,当在第一个会话开始时,在Application_OnStard事件中放置一条清空计数器的语句application("online")=0,然后,在Session_OnStart事件中,放置一条增加在线人数的语句application("online")=application("online") 1,而在Session_OnEnd事件相应地放一条减少在线人数的语句,令计数值减一。
这样,这个文件就改为如下
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Session_OnStart
application("online")=application("online") 1
End Sub
Sub Session_OnEnd
application("online")=application("online")-1
End Sub
sub Application_OnStard
application("online")=0
End Sub
sub Application_OnEnd
application("online")=0
End Sub</SCRIPT>
接下来编一个显示图形数字的程序,把在线人数显示在指定的页面上。这样就能得出在人数了
*online
<% @language="vbscript" %>
<%
tmp=application("online")
tmp=Cstr(tmp)
dim disp(20)
dim images(20)
dbbits=len(tmp)
for I= 1 to dbbits
disp(I)=left(right(tmp,I),I-(I-1))
next
for I=dbbits to 1 step -1
images(I)="<img src=&xxxx/pic"&"/"&disp(I)&".gif>"
response.write "document.write('"&images(I)&"')"
next
%>
上面的程序很简单,这里不作分析了,请自己阅读一下。在调用在线统计的页面上用一句script语句引用online文件,以显示图形统计器。
<script language="JavaScript" src=xxxx/online></script>
这个页面需要服务器的ASP语言支持,请详细参考自己的服务器情况.
在Global.asax全局应用程序类中,设置当应用程序启动时初始化计数器,代码如下。void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
//初始化
Application["counter"] = 0
}
在新会话启动时,实现计数器加1,代码如下。
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
//对Application加锁以防并行性
Application.Lock()
//增加一个在线人数
Application["counter"] = (int)Application["counter"] + 1
//解锁
Application.UnLock()
}
在会话结束时,实现计数器减1,代码如下。
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
//对Application加锁以防并行性
Application.Lock()
//减少一个在线人数
Application["counter"] = (int)Application["counter"] - 1
//解锁
Application.UnLock()
}
在主页Default.aspx第一次加载时,将Application[“counter”]赋给Label.text,实现在界面上显示在线人数,其代码如下。
Label2.Text=Application["counter"].ToString ()
在网站的根目录下,新建global.asa<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub session_onstart
Application.lock
Application("online") = Application("online") + 1
Application.unlock
End sub
Sub session_onend
Application.lock
Application("online") = Application("online") - 1
End sub
</SCRIPT>
在其他页面中显示就可以了,如下
<html>
<body>
<% session.timeout = 5%>
<P>在线人数:<% = Application("onlive") %></P>
</body>
</html>
<% counter = Application("counter") + 1 %>
<html><body>是第<%counter%>位访客
<%Application("counter") = counter %>
</body></html>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)