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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用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 下且包括下列命名值。

1.file_location 字符串,
指定记录访问次数的文件的路径名和文件名。

默认的文件名为 t。

此文件存放在 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
count = clng(visitors)
count = count + 1 ‘将被访问的次数加 1。

visitors = cstr(count)
set fw = fs.opentextfile("visitors.txt", 2,tristatefalse)
fw.write(visitors) ‘将新的访问次数写人visitors.txt保存
fw.close
%>
<% ‘(3)
application.lock
application("bar") = 1
application.unlock
exit do
loop
%>
欢迎您! 您是第<%=count%>位访问者!
利用 file access 组件实现记录被访问次数,要注意多用户的并发操作问题。

如果多个用户同时进行链接,则可能出现错误。

要防止这一现象,可以采用设置标志的方法,一次只有一个用户对文件 visitors.txt 进行读写操作.以上实例中的(1)、(3)段是完成此保护功能。

这时用到了application 的内嵌对象,下一节将专门讨论这一技术。

<三>利用 application 内嵌对象
内嵌对象的特殊性在于,它们在 asp 页内生成且在脚本中使用它们前无须创建。

可以使用 application 对象在给定的应用程序的所有用户之间共享信息。

基于 asp 的应用程序同所有的 .asp 文件一样在一个虚拟目录及其子目录中定义。

我们可以将值存储在application 集合中。

存储在 application 集合中的信息在整个应用程序中有效且具有应用程序作用域。

这时要注意因为多个用户可以共享 application 对象,所以必须要有 lock 和 unlock 方法以确保多个用户无法同时改变某一属性。

下列示例使用应用程序变量 numvisitors 存储某特定页被访问的次数。

调用 lock 方法是为了保证只有当前客户才能访问和更改 numvisitors。

调用 unlock 方法之后,即可允许其他用户访问 application 对象。

<%
application.lock
application("numvisitors") = application("numvisitors") + 1
application.unlock
%>
您是第<%= application("numvisitors") %> 位访问者!
从上面的实例中可以看出,采用 application 内嵌对象来记录访问次数是非常方便的。

但是一旦服务器关机或重启动,则 application("numvisitors") 的值将恢复为0,这种情况也是不允许的。

这时我们可以对其进行保护。

仿照page counter 组件创建的 pagecounter 对象的功能,定期将application("numvisitors") 的值存入到一个指定的文件中。

例如,每次对 application("numvisitors") 进行操作后,都利用 file access 组件创建的对象保存新的值,具体方法可参照<二>的有关内容。

以上三种方法都可以可靠地记录主页被访问的次数,繁易程度也是一目了然的。

首选方法当然是利用page counter 组件,其次是利用application 内嵌对象,辅以 file access 组件。

单独地利用 application 内嵌对象或file access 组件,都存在不可避免的缺点。

相关文档
最新文档