网站统计,一个ASP统计制作实例


  一个能对 拜访者进行编号、记录 拜访次数、IP、 工夫的统计制作实例

  我做了一个网站,www.zydn.net 固然啦,跟大家一样,也摆了个计数器在上面,天天看计数器都在不停的翻,心里很 庆幸,不过后来我又想,到底是谁看了我的网站啊?是新朋友还是老朋友啊?也不知他们来了多少次,我还想给他们都编上号,于是我申请了 免费统计,不过一连换了N个都不中意,唉,看来,惟独自己 着手 威力 安居乐业了,说干就干,水平臭臭,还望高手笑话之于,不访指教 。

  我以ACCESS库为例子,其有用SQL SERVER库也 惟独改一下链接库的语句就得啦,

  库 构造如下

  库文件名: CONT.ASP 原来是CONT.MDB但在建好后把 扩大名改为了ASP,以防库被下载 。

  表名:tab

  

  字段名 数据类型 注明

  ID 自动编号 访客的编号

  IP 文本 用于记录访客的IP

  dat1 日期 工夫 用于记录访客最终 拜访的 工夫

  dat 日期 工夫 用于记录访客第一次 拜访的 工夫

  CS 数字,整型 用于记录访客 拜访次数

  程序很 方便,惟独两个文件,dispcont.asp 用于显示统计 后果,contpage.asp用于统计信息,

  先看看CONTPAGE.ASP 是乍么统计的,代码如下:

  <%

  Set Conn=Server.CreateObject("ADODB.Connection")

  Connstr="DBQ="+server.mappath("cont.asp")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"

  Conn.Open connstr '*****以上语句用于衔接库,cont.asp是库文件名 。

  keren=request.cookies("keren") '读取cookies,cookies的名为:“keren”,哈哈 。 。阿余的E文学的臭,只懂用拼音啦 。

  if keren="" then '推断cookees是否空,假如是空,那么 确定是新朋友啦,不然是老朋友 。

  sql="SELECT * FROM tab where id=-1"

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

  rs.Open sql,conn, 1, 3

  rs.addnew '假如是新访客的话,在库中新增一条记录 。

  rs("cs")=1 '记下 拜访次数为1

  rs("ip")=request.servervariables("remote_addr") '记下IP,

  rs("dat")=now '记下目前的日期 工夫,

  rs("dat1")=date '记下目前的日期,以后用来做第一次 拜访的日期,

  response.cookies("keren")=rs("id") '写入一个cookies,内容就和ID一样 。

  response.cookies("keren").expires=date+365 '设置cookies的有效日期从现在开始,365天,

  

  else '以上是新朋友的 解决 步骤,对老朋友怎么办呢?看下面的:

  sql="SELECT * FROM tab where id="&keren '到库中去找出我们老朋友的记录

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

  rs.Open sql,conn, 1, 3

  rs("cs")=rs("cs")+1 '好啦,找到啦,把 拜访次数外加1

  rs("ip")=request.servervariables("remote_addr") '看看他的IP是多少了,记下来 。

  rs("dat")=now '记下现在的 工夫,也便是最终一次 拜访的 工夫,

  response.cookies("keren")=rs("id") '再把cookies写进去,我不知这句是否多余,没有试 。

  response.cookies("keren").expires=date+365 '设置cookies过期 工夫, 免得一年到了我就不认得他了 。

  

  end if

  rs.update '该记的都记下了,更新库吧 。

  rs.close '关闭recordset对象 。

  set conn=nothing ' 开释conn,我还是认为connection要随开随关才对,放到SESSION中我认为最不可取 。4

  

  %>

  好啦,记录就做好啦,有二十几行代码,很 方便的一个小程序,但我想,高手 确定还有高招,有高招的朋友不忘了教教阿余,

  程序写好了,怎么放到页面中呢?很 方便,在首页上 随便找个地方,外加这行代码:就行了 。

   

  接下来便是把记录显示出来,这个能做得比阿余好的人多的是,不过还是来现个丑 。

  文件名:dispcont.asp , 请看代码:

  <%

  Set Conn=Server.CreateObject("ADODB.Connection")

  Connstr="DBQ="+server.mappath("cont.asp")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"

  Conn.Open connstr '*****以上语句用于衔接库,cont.asp是库文件名 。

  page3=request("pag")

  if page3="" then page3=session("contpag") '分页数,目前分页

  if page3="" then page3="1"

  pa=request("pa")

  if pa="" then pa=session("contpa") '每页显示数

  if pa="" then pa=15 '默许每页显示15条,可任意改

  session("contpag")=page3

  session("contpa")=pa

  pages=pa '每页显示数量***************以上一段程序用于实现分页 性能

  SQL="SELECT * FROM tab order by -dat,-id"

  dim rs

  Set rs=Server.CreateObject("ADODB.RecordSet")

  rs.Open sql,conn,1,1

  csi=0

  cs1=0

  cs100=0

  csdat1=0

  do while not rs.eof

  csi=csi+rs("cs")

  if rs("cs")=1 then cs1=cs1+1

  if rs("cs")>=100 then cs100+1

  if datevalue(rs("dat"))=date then

  csdat1=csdat1+1

  end if

  rs.movenext

  loop

  ZS=RS.RECORDCOUNT

  '*****************************************************8以下一段程序用于分页显示

  %>

  

  卓越电脑统计

  

  

  共有<%Response.Write zs%>条记录,现在是第<%Response.Write page3%>页 每页显示:[&pa=15">15]条、[&pa=20">20]条、[&pa=30">30]条、[&pa=40">40]条

  [刷新]

  

  

  

<%page2=1

  for i=1 to zs step pages

  if page3=cstr(page2) then

  %>

  <% else %>

  

  <% end if

  page2=page2+1

  next

  sn=pages*(page3-1) '目前记录号=每页显示数*页数-每页显示数

  if sn>zs then sn=0

  rs.move sn,1

  '**********************************以上一段用于分页

  %>

页码 [<%Response.Write page2%>] ">[<%Response.Write page2%>]

  

  

<%

  for i=1 to pages

  Response.Write ""

  Response.Write "

"

  Response.Write "

"

  Response.Write "

"

  Response.Write "

"

  Response.Write "

"

  Response.Write "

"

  rs.movenext

  if rs.eof then exit for

  next

  rs.close

  %>

  

  

编号最终 拜访首页最终 拜访IP首页次数首次 拜访日期
"&rs("ID")&" "&rs("dat")&" "&rs("IP")&" "&rs("CS")&" "&rs("DAT1")&"
总计<%=zs%> 拜访次数为100次以上的有<%=cs100%> 拜访次数为1的有:<%=cs1%>总 拜访次数<%=csi%>今日 拜访量:<%=csdat1%>

  '****************************以上是 完全的分页显示所有复制下来就可用 。没有考量一条记录也没有的状况 。