|
ASP计数器的实现
作者:不详
ASP计数器的实现 用ASP现实网站访问量统计的方法很多,下面我们来介绍一下使用ACCESS2000+ASP实现站点计数的例子。 一、建立ACCESS数据库 1、 选择“开始\程序\Microsoft Access”,打开ACCESS2000,屏幕上会出现如图1-1所示的对话框,请选择“空ACCESS数据库”,然后按“确定”按钮。
二、编写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%> ] </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所示 .
好了一个功能不错的计数器就做好了,自己动手试试看,应该不难吧!
|