在目前的网站统计系统决大部分都是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)
使用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 统计指标的值
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的分配要分类明确代表的含义要明晰