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