您的位置:寻梦网首页编程乐园ASP编程>ASP实例学编程
ASP计数器的实现
作者:不详

ASP计数器的实现

用ASP现实网站访问量统计的方法很多,下面我们来介绍一下使用ACCESS2000+ASP实现站点计数的例子。

一、建立ACCESS数据库

1、 选择“开始\程序\Microsoft Access”,打开ACCESS2000,屏幕上会出现如图1-1所示的对话框,请选择“空ACCESS数据库”,然后按“确定”按钮。


2、 在出现的“文件新建数据库”对话窗口,请指定数据库的存储位置、文件名称(这里为WJP.MDB),然后按“创建”按钮,建立数据库文件。然后在出现的窗口中选择“使用设计器创建表”,然后在字段名和数据类型中依次输入如图1-2所示的内容,其中IP字段是用来存放客户端的IP地址的,Language字段用来存放来访者使用的语言的,Vday、Vmonth、Vtime、Vdate分别是用来存放访问日、访问月份、访问具体时间、访问具体日期的。


3、 完成输入后,关闭设计窗口,这时OFFICE会询问你是否存储表,请点取“是”。在“另存为”对话框中输入表名ipstat后按“确定”按钮。接着系统会询问你是否定义主键,选择“否”,最后保存数据库并退出。

二、编写ASP程序

本例共有default.asp和StatShow.asp两个ASP文件,default.asp主要负责写入数据和统计总访问人数等。StatShow.asp主要是查看具体的访问信息,包括总访量、月访问量、昨日访问量、今天访问量、访问者IP地址、使用的语言、访问的日期时间等。

下在是default.asp的代码

<html>

<head>

<title>计数器</title>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<style type="text/css">

<!--

body,td { font-family: "Verdana"; font-size: 14px}

a{color; black} a:hover{color: #333333} a:active{color:red}

-->

</style>

</head>

<body bgcolor="#FFCC66" text="#000000">

<div align="center">

<p>我的计数器</p>

<table width="600px" cellspacing="0" cellpadding="0" bgcolor="#000000">

<tr>

<td>

<table width="600px" cellspacing="1" cellpadding="4px">

<tr>

<td width="40px" bgcolor="#FFFFFF">:::.</td>

<td bgcolor="#FFFFFF">

<%dim conn,rs,dsn,VDateTime,VTotal,Msg

VDateTime=Now

dsn=server.mapPath("wjp.mdb")

'建立数据库连接

set conn=server.createObject("ADODB.Connection")

conn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&dsn

'建立recordset对象,然后用sql语句统计出总记录数

set rs=server.createObject("ADODB.Recordset")

set rs=conn.Execute("SELECT count(*) FROM IPStat")

VTotal=rs(0)

rs.close

'根据IP地址判断以前是否访问过

set rs=conn.Execute("SELECT VTime,VDate FROM IPStat Where&_

IP='"&Request.ServerVariables("REMOTE_ADDR")&"' ORDER BY VDate DESC,VTime DESC")

If rs.eof then

Msg="总访问人数:"&VTotal+1&"你是第一次访问"

Else

Msg="总访问人数 "&VTotal+1&" 你上次的访问时间是:"&rs("VTime")&", "&rs("VDate")

End IF

rs.close

'根据session变量判断浏览器是否刚访问过此页面,如果没有访问过则将信息写入数据库

'如果已经访问过则作任何操作,主要是为了防止刷新

if session("id")<>session.sessionid then

session("id")=session.sessionid

rs.open "IPStat",conn,3,3

rs.addNew

'写入客户端IP地址

rs("IP")=Request.ServerVariables("REMOTE_ADDR")

'写入客户端所使用的语言描述

rs("Language")=Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")

'写入是哪天访问的

rs("VDay")=Day(VDateTime)

'写入访问的月份 rs("VMonth")=Month(VDateTime)

'写入访问的时间

rs("VTime")=FormatDateTime(VDateTime,3)

'写入访问的日期

rs("VDate")=FormatDateTime(VDateTime,2)

rs.update

rs.close

end if

set rs=nothing

conn.close

set conn=nothing

response.write Msg

%>

</td>

</tr>

</table>

</td>

</tr>

</table>

<p><a href="StatShow.asp">查看详细信息</a></p>

</div>

</body>

</html>

以下是StatShow.asp代码

<%

dim conn,rs,dsn

dsn=server.mapPath("wjp.mdb")

'建立数据库连接

set conn=server.createObject("ADODB.Connection")

'建立recoreset对象

conn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&dsn

set rs=server.createObject("ADODB.Recordset")%>

<html><head><title>我的计数器</title><style type="text/css"><!--

body,td {font-family:"Verdana"; font-size:14px}

a {text-decoration:none}

--></style></head><body text="#000000"><p align=center>我的计数器</p>

<%

Dim Total, MTotal, YDTotal, TDTotal

'取得总访问量,并存到Total变量中

set rs=conn.Execute("SELECT count(*) FROM IPStat")

Total=rs(0)

rs.close

'取得本月访问量,并存到MTotal变量中

set rs=conn.Execute("SELECT count(*) FROM IPStat Where VMonth='"&Month(Date)&"'")

MTotal=rs(0)

rs.close

'取得昨日访问量,并存到YTotal变量中

set rs=conn.Execute("SELECT count(*) FROM IPStat Where VMonth='"&Month(Date)&"' AND VDay='"&(Day(Date)-1)&"'")

YDTotal=rs(0)

rs.close

'取得今天访问量,并存到TTotal变量中

set rs=conn.Execute("SELECT count(*) FROM IPStat Where VMonth='"&Month(Date)&"' AND VDay='"&Day(Date)&"'")

TDTotal=rs(0)

rs.close

%><p align=center>总访量: <b><%=Total%></b> | 本月访问量: <b><%=MTotal%></b>

| 昨天访问量: <b><%=YDTotal%></b> | 今天访问量: <b><%=TDTotal%></b></p><hr style="height:1px; color:black; width:760px">

<%

DIM pageNo

'取得浏览器以get方式传来的页码,并存放到pageNO变量中

pageNo=Request.QueryString("pageNo")

IF pageNo="" THEN pageNo=1

'打开数据库把IPStat表中的数据存到前面定义过的recoreset对象中

rs.open "SELECT * FROM IPStat ORDER BY VDate DESC,VTime DESC",conn,1,1

'设置每页显示20条记录

rs.pageSize=20

IF INT(pageNo)<1 THEN pageNO=1

IF INT(pageNo)>rs.pageCount THEN pageNo=rs.pageCount

'设置当前页次

rs.absolutePage=INT(pageNo)

%><p align=center> [

<%

'显示页次超级链接

for i=1 to rs.pageCount %><a href="StatShow.asp?pageNo=<%=i%>"> -<%=i%>- </a><%next%> ]&nbsp;</p><table width=760 cellspacing=0 cellpadding=0 align=center><tr><td bgcolor="#000000"><table width="100%" cellspacing=1 cellpadding=4><tr bgcolor="#EEEEFF"><td bgcolor="#EEEEFF" width="30%">访问者IP地址</td><td width="20%">使用的语言</td><td width="25%">访问时间</td><td width="25%">访问日期</td></tr>

<%

'利用for语句读出数据

For i=1 To rs.pageSize

If rs.eof Then Exit For

%><tr bgcolor="#BBBBEE"><td bgcolor="#FFFFFF"><%=rs("IP")%></td><td bgcolor="#FFFFFF"><%=rs("Language")%></td><td bgcolor="#FFFFFF"><%=rs("VTime")%></td><td bgcolor="#FFFFFF"><%=rs("VDate")%></td></tr><%

rs.movenext

Next

%></table></td></tr></table><p align=center>共有<%=Total%>条记录,每页 <% =rs.pageSize %>条记录, 第 <% =pageNo %>页</p><hr style="height:1px; color:black; width:760px"></body></html><%

rs.close

set rs=nothing

conn.close

set conn=nothing

%>

三、保存并运行程序

将上面的代码分别保存为default.asp和StatShow.asp文件,并和wjp.mdb数据一起复制到Web执行目录运行即可。本例的Web目录为f:\inetpub\wwwroot\count,运行如图1-3和1-4所示

.
图1-3


图1-4

好了一个功能不错的计数器就做好了,自己动手试试看,应该不难吧!