做一個簡單的網站統計
設計思路:利用用戶網頁請求時觸發服務器sessionid來記錄用戶的登錄狀態,由於每個網頁請求活動最多的是conn.asp這個文件,我們利用這個文件來做在線用戶的信息處理,當用戶20分鐘內沒有網頁請求時,就清除這個用戶。
1、數據表:我們在數據庫中加入兩個表
line表:sessionid 字符型20位用於記錄客戶網頁請求的唯一標記
userdate 日期時間型用於記錄客戶最後一次網頁請求的時間
id 自動編號型
你也可以在這個表中記錄用戶的其它信息,如帳號、IP等信息
count表:userdate 日期時間型用於記錄當天的日期
count 數字型用於記錄網站點擊量
today 數字型用於記錄今天的訪問量
max 數字型用於記錄日最大訪問量
在這個表中,由於只有一條記錄,所以用不著id這個字段,但保留id字段是一個好的習慣
2、利用conn.asp來處理line表
(1)連接數據庫
dim conn
dim connstr
dim db
db="date/date.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
conn.Open connstr
(2)清空超時的記錄
conn.execute("delete from line where datediff(""s"",userdate,now())>=1200")
(3)記錄客戶信息至line表,並進行站點統計處理
dim sql,sql1,rs,rs1
Set rs=Server.CreateObject("ADODB.Recordset")
sql="select * from line where [sessionid]=""&session.sessionid&""" "判斷客戶是否最初的網頁請求
rs.open sql,conn,1,3
if not rs.eof then "如果是最初的網頁請求,就記錄客戶信息,否則只更改請求時間
rs("userdate")=now()
else
Set rs1=Server.CreateObject("ADODB.Recordset") "以下部分做站點統計
sql1="select * from [count]"
rs1.open sql1,conn,1,3
if rs.eof then "如果表中沒有記錄,就初始化這個表
rs.addnew
rs("count")=1
rs("max")=1
rs("today")=1
rs("userdate")=date()
else
rs1("count")=rs1("count") 1 "網站點擊量計數
if rs1("userdate")=date() then "如果系統日期和數據記錄的最後日期相同,把當日訪問量加1
rs1("today")=rs1("today") 1
else '如果不同,把日訪問量置1,數據記錄日期改為服務器日期
rs1("today")=1
rs1("userdate")=date()
end if
rs1.update
if rs1("max")<=rs1("today") then '如果當日統計數超出最大日訪問量,更新最大日訪問量
rs1("max")=rs1("today")
end if
end if
rs1.update
rs1.close
set rs1=nothing
rs.addnew "以下是記錄用戶的信息
rs("sessionid")=session.sessionid "把sessionid寫入數據表
rs("userdate")=now() 把系統日期寫入數據表
end if
rs.update
rs.close
set rs=nothing
以上的處理只是準備好了統計信息,用於網站統計的代碼如下,我們用line.asp作為文件名
<!--#include file="conn.asp"-->
<% dim count,today,max,line
Set rs=Server.CreateObject("ADODB.Recordset")
sql="select * from [count]"
rs.open sql,conn,1,1
today=rs("today")
count=rs("count")
max=rs("max")
rs.close
set rs=nothing
Set rs=Server.CreateObject("ADODB.Recordset")
sql="select count(*) from line"
rs.open sql,conn,1,1
line=rs(0)
rs.close
set rs=nothing
%>
以上我們準備好了網站統計信息,分別放在變量count,today,max,line中,在.asp網頁中,我們可以用response.write 來輸出,用include來引用,但在html文檔中,肯定是不行的,所以我們得用下面的語句來輸出統計內容:
document.write ("網站訪問量:<%=count%>人<br>")
document.write("今天有:<%=today%>人訪問了本站<br>")
document.write("本站的最高日訪問量:<%=max%>人<br>")
document.write("當前在線:<%=line%>人")
我們用<script src="line.asp" ></script>來引用這個文件就可以了