在目前的網站統計系統決大部分都是CGI的
但編寫起來特別復雜
而ASP學起來簡單
更有和數據庫結合的優點
所以結合自己曾經做過的網站統計系統
和大家探討一下ASP編寫網站統計系統
大家都看過網易的網站統計系統
它可以統計總訪問量
每日平均訪問量
當日訪問量
最高訪問量
最高訪問日期
日流量分析
月流量分析
周流量分析
浏覽器分析
等等
其實要做一個ASP的訪問統計系統關鍵是系統表結構的設計
以及如何來采集用戶的CGI變量
如何來顯示用戶的信息
也就是說系統的關鍵是兩個ASP程序
統計程序和顯示程序
首先我們先看看如何來采集用戶的訪問信息
我們編寫訪問統計需要知道用戶的如下信息
訪問者的IP(根據訪問IP可以形成訪問者IP列表)
訪問者的浏覽器與操作系統(統計訪問者的浏覽器與操作系統及所有訪問者浏覽器與操作系統比例圖)
訪問者的訪問時間(進行日訪問量分析
月訪問量分析
周訪問量分析)
下面我們來看看用ASP的獲得以上信息的語句
獲得訪問者IP Dim M_IP
M_IP=Request
Servervariables(
REMOTE_HOST
)
用上面的語句可以取得訪問者的IP
獲得浏覽器信息 Dim O_Browser
M_BrowserType
Set O_Browser=Server
Createobject(
MSWC
BrowserType
)
M_BrowserType=O_Browser
Browser+O_Browser
Version
獲得訪問時間 Dim M_DateTime
M_DateTime=Year(Date())&
/
&Right(
&Month(Date())
)&
/
Right(
&Day(Date())
)&
/
&Right(
&Hour(Time())
)&
:
&Right(
&Minute(Time())
)&
:
&Right(
&Second(Time())
)
取得用戶的操作系統 在ASP中使用如下語句可以得到訪問者的http_user_agent字符串
Dim StrUserAgent
StrUserAgent=Request
ServerVariables(
HTTP_USER_AGENT
)
這個字符串一般是如下格式
Mozilla/
(compatible; MSIE
; Windows
)
上面的字符串可以說明訪問者使用的操作系統是Windows
浏覽器是MSIE
但是這個字符串格式不固定
而且可以自己更改
平常我們所見的其它一些主要的UserAgent字符串如下
使用IE的浏覽器
Mozilla/
(compatible; MSIE
; Windows
)
Mozilla/
(compatible; MSIE
; Windows
);
Mozilla/
(compatible; MSIE
; Windows
)
Mozilla/
(compatible; MSIE
; Windows
);
Mozilla/
(compatible; MSIE
b
; Windows NT)
使用NetScape的浏覽器
Mozilla/
〔en〕 (Win
; I)
Mozilla/
〔en〕 (WinNT; U ;Nav)
Mozilla/
〔en〕 (WinNT; U)
Mozilla/
Gold (Win
; I)
使用Opera的浏覽器
Mozilla/
(compatible; Opera/
; Windows
)
b
FrontPage編輯器
Mozilla/
(compatible; MS FrontPage
)
使用Sun操作系統
Mozilla/
Gold (X
; I; SunOS
i
pc)
使用PowerPc的Mac機
Mozilla/
(compatible; MSIE
; Mac_PowerPC)
通過分析以上字符串
我們可以找出規律
編寫一個子程序來判斷訪問者用的是何種操作系統
又由於用ASP中的判斷浏覽器類型的控件需要更新Browser
ini文件
所以我們可以結合這個字符串來判斷浏覽器屬性
我們以什麼樣的方式來統計網站呢?
我們可以讓用戶在他的主頁上加入如下語句
<a ><img src=
?userid=username
></a>上面的userid是具體哪一個用戶
要注意用戶和訪問者不是一個概念
通過上面的字符串我們就可以采集用戶的訪問數據
並給用戶提供觀看數據的鏈接
在我們看加有網易的統計系統的頁面時會發現它會返回給用戶一個圖標
我們就可以在counter
asp中實現這個功能
加入
response
redirect
這個語句我們可以加在統計數據采集後返回給用戶
如何設計數據表結構?
設計表結構是一項極其重要的工作
它的合理與否與程序的編制緊密相關
一個網站統計系統應該有一個用戶表
統計值表
這個用戶表也就是保留注冊用戶信息的表
統計值表就是記錄用戶的每一項統計指標值的表
在統計值的表中我們可以指定用戶的統計指標
我們可把每一個指標用一個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
總訪問量
日訪問量
日訪問量
: :
: :
日訪問量
要想對用戶開始統計我們必須得先讓用戶注冊
用戶使用的流程如下
填注冊表
>初始用戶的value表(把對應的ID加入)
>把注冊信息反饋給用戶
>用戶在自己的頁面上加入鏈接
>開始統計
能采集數據我們都能采到了
那麼我們就開始編制ASP的統計頁面
這一頁我們叫計數頁
counter
asp
這段asp代碼我們需要讓它按如下的流程進行采集數據並保存數據和更新數據
采集用戶名
判斷用戶名是否合法
采集訪問者的信息
對信息進行加工
進行保存和更新數據庫
返回logo圖標
調用這個ASP用counter
asp?user=abc這個方式
采集用戶名我們可以用Request對象的相應方法取得
然後檢查用戶表判斷用戶是否合法
然後取信息
用我們上面講到的取得相應信息的方法取得信息
然後進行加工保存在數據表裡
但最重要的是如何對數據進行更新
如當日每小時訪問統計數
當天每小時統計數等
我們如何對每天的數據進行更新是這個程式的要點
我們可以采取幾種方式
如對每天的每個小時的記錄的更新我們采取在每天午夜
點更新
對每月的每一天的數據我們在月份切換的那一天進行更新
下面我講一下具體的流程
以月份統計舉例
得出上一次的統計的日期時間
得出當前的日期時間
當前月份並轉化成相應的ID
判斷當前月份與上一次月份是否相同
如果相同則給總數加
當前月的ID累加
如不相同則清零所有月份ID
只給總數ID加
根據月份統計我們可以做一下小時統計
周統計
天統計
按如上的流程我們就可以做統計頁了
要注意每個ID的分配要分類明確代表的含義要明晰
From:http://tw.wingwit.com/Article/program/net/201311/11623.html