流量|統計|流量|統計
在目前的網站統計系統決大部分都是CGI的,但編寫起來特別複雜,而ASP學起來簡單,更有和資料庫結合的優點,所以結合自己曾經做過的網站統計系統,和大家探討一下ASP編寫網站統計系統。
大家都看過網易的網站統計系統,它可以統計總訪問量,每日平均訪問量,當日訪問量,最高訪問量,最高訪問日期,日流量分析,月流量分析,周流量分析,瀏覽器分析,等等。
其實要做一個ASP的訪問統計系統關鍵是系統資料表結構的設計。以及如何來採集使用者的CGI變數,如何來顯示使用者的資訊。也就是說系統的關鍵是兩個ASP程式,統計程式和顯示程式。
首先我們先看看如何來採集使用者的訪問資訊。
我們編寫訪問統計需要知道使用者的如下資訊,訪問者的IP(根據訪問IP可以形成訪問者IP列表),訪問者的瀏覽器與作業系統(統計訪問者的瀏覽器與作業系統及所有訪問者瀏覽器與作業系統比例圖),訪問者的訪問時間(進行日訪問量分析,月訪問量分析,周訪問量分析),下面我們來看看用ASP的獲得以上資訊的語句:
1、獲得訪問者IP
Dim M_IP
M_IP=Request.Servervariables("REMOTE_HOST")
用上面的語句可以取得訪問者的IP。
2、獲得瀏覽器資訊
Dim O_Browser,M_BrowserType
Set O_Browser=Server.Createobject("MSWC.BrowserType")
M_BrowserType=O_Browser.Browser+O_Browser.Version
3、獲得訪問時間
Dim M_DateTime
M_DateTime=Year(Date())&"/"&Right("0"&Month(Date()),2)&"/"Right("0"&Day(Date()),2)&"/"&Right("0"&Hour(Time()),2)&":"&Right("0"&Minute(Time()),2)&":"&Right("0"&Second(Time()),2)
4、取得使用者的作業系統。
在ASP中使用如下語句可以得到訪問者的http_user_agent字串。
Dim StrUserAgent
StrUserAgent=Request.ServerVariables("HTTP_USER_AGENT")
這個字串一般是如下格式:
Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)
上面的字串可以說明訪問者使用的作業系統是Windows98,瀏覽器是MSIE 4.01,但是這個字串格式不固定,而且可以自己更改。
平常我們所見的其它一些主要的UserAgent字串如下:
使用IE的瀏覽器:
Mozilla/2.0 (compatible; MSIE 3.01; Windows 95)
Mozilla/4.0 (compatible; MSIE 4.0; Windows 95);
Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)
Mozilla/4.0 (compatible; MSIE 5.0; Windows 98);
Mozilla/4.0 (compatible; MSIE 5.0b2; Windows NT)
使用NetScape的瀏覽器:
Mozilla/4.03 〔en〕 (Win95; I)
Mozilla/4.08 〔en〕 (WinNT; U ;Nav)
Mozilla/4.5 〔en〕 (WinNT; U)
Mozilla/3.04Gold (Win95; I)
使用Opera的瀏覽器:
Mozilla/4.0 (compatible; Opera/3.0; Windows 95) 3.50b10
FrontPage編輯器:
Mozilla/2.0 (compatible; MS FrontPage 3.0)
使用Sun作業系統:
Mozilla/3.01Gold (X11; I; SunOS 5.7 i86pc)
使用PowerPc的Mac機:
Mozilla/4.0 (compatible; MSIE 4.5; Mac_PowerPC)
通過分析以上字串,我們可以找出規律,編寫一個子程式來判斷訪問者用的是何種作業系統,又由於用ASP中的判斷瀏覽器類型的控制項需要更新Browser.ini檔案,所以我們可以結合這個字串來判斷瀏覽器屬性。
我們以什麼樣的方式來統計網站呢?
我們可以讓使用者在他的首頁上加入如下語句:
<a href="http://www.abc.com/viewer.asp?userid=username"><img src="http://www.abc.com/counter.asp?userid=username"></a>上面的userid是具體哪一個使用者,要注意使用者和訪問者不是一個概念。
通過上面的字串我們就可以採集使用者的訪問資料,並給使用者提供觀看資料的連結。在我們看加有網易的統計系統的頁面時會發現它會返回給使用者一個表徵圖,我們就可以在counter.asp中實現這個功能。
加入:response.redirect "abc.gif"
這個語句我們可以加在統計資料擷取後返回給使用者。
如何設計資料表結構?
設計表結構是一項極其重要的工作,它的合理與否與程式的編製緊密相關。
一個網站統計系統應該有一個使用者表,統計值表。
這個使用者表也就是保留註冊使用者資訊的表,統計值表就是記錄使用者的每一項統計指標值的表。在統計值的表中我們可以指定使用者的統計指標,我們可把每一個指標用一個ID值來表示,這裡我們簡單舉例。
使用者表:
Table Name:regist_table
Field type
username C 使用者名稱
password C 密碼
regdate C 註冊時間
值表:
Table Name:value_table
Field type
username c 使用者名稱
id c 統計指標ID
value i
datetime c 統計指標的值
Id列表:
Table Name:id_table
Field type
id C 統計指標ID
idvalue C 統計指標的說明
有了這三個表我們就可以開始做了。
如我們可以指定以下ID
id idvalue
101 總訪問量
201 1日訪問量
202 2日訪問量
: :
: :
231 31日訪問量
要想對使用者開始統計我們必須得先讓使用者註冊,使用者使用的流程如下:
填註冊表->初始使用者的value表(把對應的ID加入)->把註冊資訊反饋給使用者->使用者在自己的頁面上加入連結->開始統計
能採集資料我們都能採到了,那麼我們就開始編製ASP的統計頁面。
這一頁我們叫計數頁,counter.asp
這段asp代碼我們需要讓它按如下的流程進行採集資料並儲存資料和更新資料:
採集使用者名稱,判斷使用者名稱是否合法,採集訪問者的資訊,對資訊進行加工,進行儲存和更新資料庫,返回logo表徵圖。
調用這個ASP用counter.asp?user=abc這個方式。
採集使用者名稱我們可以用Request對象的相應方法取得,然後檢查使用者表判斷使用者是否合法,然後取資訊,用我們上面講到的取得相應資訊的方法取得資訊,然後進行加工儲存在資料表裡,但最重要的是如何對資料進行更新,如當日每小時訪問統計數,當天每小時統計數等,我們如何對每天的資料進行更新是這個程式的要點,我們可以採取幾種方式,如對每天的每個小時的記錄的更新我們採取在每天午夜12點更新,對每月的每一天的資料我們在月份切換的那一天進行更新。
下面我講一下具體的流程,以月份統計舉例:
1,得出上一次的統計的日期時間
2,得出當前的日期時間,當前月份並轉化成相應的ID
3,判斷當前月份與上一次月份是否相同,如果相同則給總數加1,當前月的ID累加1,如不相同則清零所有月份ID,只給總數ID加1
4,根據月份統計我們可以做一下小時統計,周統計,天統計。
按如上的流程我們就可以做統計頁了,要注意每個ID的分配要分類明確代表的含義要明晰。