<<<返回

统计访问者
在Active Server Pages中包括两个组件用来进行页面的计数统计。使用该组件，你就可以了解每一个页面的访问情况，可以在这个页面上直接显示，或者用户自己需要的其他目的。 计数器组件 计数器组件用来统计一个页面被请求的次数，当然也可以用来统计其他东西，例如：统计站点访问者，统计广告点击次数，甚至统计用NetScape2.0访问的用户人数这样的细观信息。 你只需要创建一个这样的事例，而且一个这样的事例就可以提供很多个单独的计数器，这种划分是按照计数器名称进行的。 由于你只需要创建一个计数器组件，那么在Global.asa中进行这种创建是非常不错的主意，这样当你的网站开始运行时就只有一个计数器对象的事例。
注：对Global.asa的详细介绍参见本书的第17章。
下面是在Global.asa中进行这个事例创建的脚本：
<OBJECT RUNAT=Server SCOPE=”Application” ID=”MyCount”
PROGID=”MSWC.Counters”></OBJECT>
微软的HTML<OBJECT>标记被用来创建一个名字为MyCount的范围是Application的计数器事例。记住使用<OBJECT>对象要在Global.asa文件中的任何事件的脚本之外。一旦该事例被创建，你就可以在整个application范围内使用其方法属性。
计数器组件有下面4个方法。下面将介绍每个方法的具体使用。
· Get(Counter Name).这个方法返回当前的计数器值，如果计数器不存在，则进行创 建并且赋值为0。
·Increment(Counter Name).对计数器进行加1操作，如果计数器不存在，则创建并且 赋初值为1。
·Remove(Counter Name).消除指定的计数器。
·Set(Counter Name, integer).这个方法有两个参数，第一个是计数器的名称，第二个 是一个整数，你可以将当前计数器的值设定为该整数，同样对于不存在的计数器也可以进行创建和赋值。
这个计数器对象在Global.asa中创建之后，就可以在你的Active server Pages中添加 和减少独立的计数器，在一个页面中创建的计数器可以增加、减少，甚至移除到另一个页面上去。下面就是这么一个使用计数器组件对特定页面进行访问次数统计的示例：
<HTML>
<HEAD><TITLE>某一页</TITLE></HEAD>
<BODY>
这个页面已经被浏览<%=MyCount.Increment(“PageCnt”) %>次
</BODY>
</HTML>
第一次调用该页面时，PageCnt计数器就被创建然后赋值为1，以后每次都会自动加1。
那么当服务器突然间以外关闭怎么办？你创建的计数器还会存在，因为这已经保存到Counters.txt文件中了。当服务器再度开启，那么这个计数器又可以继续运行。
不过这么一个计数器确实看上去过于单薄，那么很多有点特点的计数器都是用图片文件的，下面是这样的一个例子：
<%
SUB ShowImageCnt(TheNum)
CntStr=CSTR(TheNum)
For I=1 to LEN(CntStr)
CntPart=MID(CntStr,I,1)
%>
<img src=”<%=CntPart %>.gif” ALT=”<%=CntPart %>”>
<%
NEXT
END SUB
%>
<HTML>
<HEAD><TITLE>某一页</TITLE></HEAD>
<BODY>
这个页面已经被访问了<%ShowImgCnt MyCount.Increment(“PageCnt”) %>次。
</BODY>
</HTML>
这个active Server Pages也显示计数器，不过这里面用的是图片文件的显示，当然， 你首先需要有1.gif,2.gif,3.gif…9.gif,0.gif这样10个图片文件来显示10个数字。其中ShowImageCnt子程序就是取出每一个数字然后找到相应图片文件显示出来，由于程序相当简单，不做过多解释。这些显示数字的图片文件可以在很多地方自由下载，当然也可以自己去创作。
Page Counter组件
从名称上看似乎和前者没有什么区别，不过它的目的更加单一，是显示该页面打开次数。
注：早期版本的Active Server Pages和IIS均不提供该组件，那么可以在 http://www.microsoft.com/iis下面进行下载。
Page Counter组件比上一个小节的Counter组件简单很多，它除了对页面点击次数进 行统计之外别无所用。下面是该组件的两个方法。
·Hits(Path)返回限定页面的点击次数，如果没有提供参数，则默认为当前页
·Reset(path)将该页面点击次数重置为0。
和Counter组件不同的是，你不需要在Global.asa中进行什么变动，只是需要在要进行调用的页面上创建该事例，然后使用就可以了。
下面这个例子：
<HTML>
<HEAD><TITLE>页面计数器示例</TITLE></HEAD>
<BODY>
<%
Set MyHits=Server.CreateObject(“MSWC.PageCounter”)
%>
这个页面被访问了<%=MyHits.hits %>次
</Body>
</HTML>
这种调用过程极为简单，并显示该页被打开次数，请注意这里面的hits方法没有调用参数，因为是当前页的计数值。