asp访问人数、在线人数.访问来源(存储到数据库中)

来源:互联网 发布:java三个发展方向 编辑:程序博客网 时间:2024/06/13 06:27

 

这段时间修改自己公司的网站,让我很难受的是公司网站是asp代码写的。

在其基础上要新增访问统计功能,本来觉得很简单,在网上找了一些代码拼凑的使用

除了很多错误,asp异常信息也不熟。每次出现错误就要到网上找错误原因。

为以后使用方便因此记录。

 


<SCRIPT LANGUAGE="vbscript" RUNAT="server">
 dim conn,db
 dim connstr,strsql,streferer,strdomain
 db="/ysbeyond/Databases/21asp.mdb"       //数据库文件位置
 //创建连接对象
 set conn=server.CreateObject("adodb.connection")
 connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)

sub Application_onStart
 
 conn.open connstr
 
 //查询访问数量
 strsql="select top 1  *   from   statistics"  
  set rs =server.createobject("adodb.recordset")
 
   rs.open strsql,conn,1,1
   if rs.eof and rs.bof then
    response.write "数据无记录"
   else
    Application("Count")=Cint(rs("accesscnt")) //总访问人数
   end if
   Application("Online") = 0           //在线人数
end sub

Sub Session_OnStart
 Session.Timeout=2 //会话结束时间
 Application.Lock
  if conn.state  = 0 then
   conn.open connstr
  end if
  
  //更新访问数量
  strsql = "update statistics set accesscnt = accesscnt +1 "
  conn.execute(strsql)
  
  //记录访问地址
  set streferer = Request.ServerVariables("HTTP_REFERER") //访问来源地址
  set strdomain = Request.ServerVariables("SERVER_NAME")  //域名
  strsql = "insert into referersource(refurl,visitdate) values('"&strdomain&"','"&now()&"')"
  conn.execute(strsql)
  
  //查询访问数量
  strsql="select top 1  *   from   statistics"  
   set rs =server.createobject("adodb.recordset")
  
   if   rs.state = 0  then    
    rs.open strsql,conn,1,1
   end if    
  if rs.eof and rs.bof then
   response.write "数据无记录"
  else
   Application("Count")=Cint(rs("accesscnt")) //总访问人数
  end if
  Application("Online") = Cint(Application("Online")) + 1 //在线人数+1
  Application.UnLock
end sub

Sub Session_OnEnd
 Application.Lock
  Application("Online") = Cint(Application("Online")) - 1 //会话结束时在线人数减1
 Application.UnLock
end sub

</script>