日期:2013-01-31  浏览次数:20922 次

用ASP技术得到主页被访问次数的三种方法


            华中理工大学自动控制工程系  周茜 田忠和
   ASP 是Microsoft Active Server Pages 的缩写,即动态服务器主页。
它是服务器端脚本编写环境,在Web服务器上解释脚本,可以组合HTML页、脚本命令和ActiveX组件来创建动态、交互式、高效率的 Web 页和基于 Web 的功能强大的服务器应用程序。ASP 可以在Microsoft 的任何 Web服务器上发布各种动态数据,而且ASP应用程序很容易开发和修改。
     ASP技术之所以容易,很重要的原因是 ASP 技术充分利用各种功能强大的内嵌对象和ActiveX组件来执行任务。ActiveX组件是包含在动态链接库(.dll)或可执行文件(.exe)中的可执行某项或一组任务的代码。因为组件可以执行公用任务,所以不必自己去创建执行这些任务的代码,可以直接利用组件作为脚本和基于 Web 应用程序的基本构造块。只要知道如何访问和控制组件所提供的对象,即使是编写脚本的新手,也可以在不了解组件运作方式的情况下编写脚本。
要使用组件提供的对象,首先要创建对象的实例并将这个新的实例分配变量名。使用 ASP 的 Server.CreateObject 方法可以创建对象的实例。然后,使用脚本语言的变量分配指令为对象实例命名。创建对象实例时,必须提供实例的注册名称(PROGID)。
对于一个 Web 站点,我们通常需要记录其被访问的次数。本文针对这个问题,提出三种方法供参考。
  
<一>利用Page Counter 组件
    Page Counter 组件可以创建 PageCounter 对象,以记录和显示 Web 页被打开的次数。每隔一定的时间,此对象将访问次数写入文本文件以便数据不会在服务器关机时丢失。Page Counter 组件使用一个内部 Central Management 对象来记录应用程序中的每一页被打开的次数。当使用 Server.CreateObject 方法在一页上创建 PageCounter 对象的实例时,此对象从 Central Management 对象中获取指定Web页的当前访问次数后,就可以使用此对象已有的方法来操作了。
  
语法:<% Set oVar = Server.CreateObject("MSWC.PageCounter") %>
参数:oVar   指定通过调用 Server.CreateObject 创建的 PageCounter 对象      
             的名称。
方法
Hits    显示指定的 URL 被打开的次数。  
PageHit 增加访问次数。
Reset   将指定的页的访问次数设置为 0。
  
注意:PageCounter 对象不是内嵌对象,所以必须进行注册。当此对象被编译或注册时,页计数器向注册表添加 MSWC.PageCounter 键。该键被添加到 HKEY_CLASSES_ROOT 下且包括下列命名值。
2.File_Location  字符串,
   指定记录访问次数的文件的路径名和文件名。默认的文件名为 hitcnt.cnt。此文件存放在 Windows 目录下。
2.Save_Count     DWORD 型,
   指明在访问次数被存储到 Hit Count Data 文件前的访问次数。注意,这是访问的总数而不是每一页的访问次数。默认值为 25。
  
下例使用 PageCounter 对象跟踪访问者的个数并发送特定的消息。
  
<% Set MyPageCounter = Server.CreateObject("MSWC.PageCounter")
   HitMe = MyPageCounter.Hits
%>
   您是第<%= HitMe %>位访问者。
  
<二>利用 File Access 组件
    因为 Page Counter 组件并没有和IIS 一起安装,必须另行安装方可使用。若没有安装 Page Counter 组件,则可以采用File Access 组件。 File Access 组件可用来访问计算机文件系统的方法和属性。用户可以使用 File Access 组件创建 FileSystemObject 对象,该对象提供用于访问文件系统的方法、属性和集合。
以下的实例说明了如何记录被访问的次数。
  
  <%                                          ‘(1)
    Do While  Application("bar") = 1
       Application.Lock
       Application("bar") = 0
       Application.Unlock
  %>
  <%                                          ‘(2)
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fr = fs.OpenTextFile("visitors.txt", ForReading,TristateFalse)
'表示 以只读模式、ASCII 格式打开文件 visitors.txt ,返回一个
'TextStream 对象 fr,visitors.txt保存的是被访问的次数。
     
         visitors = fr.Read(10)   
         fr.Close