网页计数器代码

在网站目录下新建一个文本:txtcounter.txt 在文本填写1或其他识字

2、新建一asp文件:count.asp,加 入以下代码:

<%
CountFile=Server.MapPath("txtcounter.txt")
Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.OpenTextFile(CountFile,1,FALSE,FALSE)
counter=Out.ReadLine
Out.Close
SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.CreateTextFile(CountFile,TRUE,FALSE)
Application.lock
counter= counter + 1
Out.WriteLine(counter)
Application.unlock
Response.Write"document.write("&counter&")"
' 为了在页面正确显示计数器的值,调用VBScript函数Document.write
Out.Close
%>

3、 在需要计数的网页加入:总访问<script language="JavaScript" src="count.asp">次

现在看网页就是可以计数了!

与页面分离的图象计数器

  人们的追求是永无止境的,也许你需要一个更 有个性的图形数字计数器,而不是简单的文本数字计数器。没问题,现在我们就来看看用ASP是怎样来实现图形计数器功能的。要实现图形计数器,关键点在于如 何实现把计数器文件中的数据值转变为对应的图象表示。因为十进制数有0,1,2,3,4,5,6,7,8,9共十个不同的数数字,我们需要有十个对应的图 象,且图象的文件名字要与显示的数字对应起来,比如0对应的数字图象的文件名字就是0.gif,1对应的就是1.gif,...(图象自己可以用 Photoshop等工具制作,或者从网络上下载)。这里我们要用到VBScript函数Len(string | varname)、Mid(string,start[,length])。由Len(counter)可得到计数器值的位数,由 Mid(counter,i,1)可以得到计数器值的第i位上的数字,我们可利用这个值来调用相应的数字图象。用For循环语句,我们不难得出计数器值各 个位上的数字并转化成对应的数字图象,这样,我们就能实现文本数值到图象数字的转变。下面就是一个用ASP编写的图象计数器实例,因为大部分代码前面都分 析过,所以代码中只注释了部分语句。

与页面分离的图象计数器imgcounter.asp代码:

<% @language="VBScript"%>
<%
dim images(20)
'定义一数组,用来存放显示每一位 数字图象的语句
CountFile=Server.MapPath("imgcounter.txt")
Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.OpenTextFile(CountFile,1,FALSE,FALSE)
counter=Out.ReadLine
Out.Close
SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.CreateTextFile(CountFile,TRUE,FALSE)
Application.lock
counter= counter + 1
Out.WriteLine(counter)
Application.unlock
countlen=len(counter)
' 得到计数器值的位数
for i=1 to countlen
images(i)="<img src="&"http://202.101.209.75/asptemp/counter/images/"&"/ " & mid(counter,i,1) & ".gif></img>"
'由循环语句得到各个位上数值对应 图象的显示代码(html),并把它存在数组中
'具体使用时请注意图象的实际服务器及目录路径
response.write"document.write('"&images(i)&"');"
' 调用函数Document.write输出显示数字图象的html代码
next
Out.Close
%>

 

在要计数的页面加入如下的代码:

<p>
您是第
<script language="JavaScript" src="imgcounter.asp">
//引用时注意ASP计数器所在的服 务器及目录路径。
</script>
位来客
</p>

 

计数器设计详解

  ASP内含五个内置的"Active Server Components"(ActiveX服务器组件),即Database Access component(数据库访问组件)、File Access component(文件访问组件)、Ad Rotator component(广告轮播器组件)、Brower Capabilities component(浏览器信息组件)、Content Linking component(内容链接组件)。我们下面要设计的计数器,就是通过其中的File Access component(文件访问组件)来读写服务器文件来实现。算法思路是:在服务器端用一个文本(ASCII)文件存放计数数值,每当页面被访问时就从文 件中读出数值,显示给用户,并且使数值加1,把增加后的数值写回到文件。

  写入数据到一个服务器计数文件的ASP语句和说明如下:

CounFile=Server.MapPath("用来存放计数器值的文件名")
  'Server服务器访问方法 MapPath(path)是将存放计数器值的文件所在的路径   转换成物理路径
SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
  '使用方法 CreateObject定义对象FileSystemObject
SET OutStream=Server.CreateTextFile(FileObject,True,False)
  '使用对象 FileSystemObject提供方法CreateTextFile产生文本文件,其中参   数"True"表示覆盖原来的文件,"False"表 示文件为ASCII类型
OutStream.WriteLine "要写入的数据"
  'OutStream.WriteLine为往文 件写入一行数据

  从一个服务器文件读取数据的ASP语法如下:

CounFile=Server.MapPath("用 来存放计数器值的文件名")
SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
SET InStream=Server.OpenTextFile(FileObject,1,false,false)
  '使用对象 FileSystemObject提供方法OpenTextFile产生文本文件,
'其中参数"True"表示覆盖原来的文件,"False"表 示文件为ASCII类型
"要读取的数据"=InStream.ReadLine
'其中InStream.ReadLine为从文件中读取 的一行数据

  下面是一个用ASP实现页面计数器功能的计数器例子(simplecounter.asp),我在代码中详细注释了语句。 你可以把以下代码粘贴到你需要计数的页面代码中。当然,你的服务器必须支持ASP,且你已经在主页所在的目录下创建了一个内容为0的文本文件 simplecounter.txt。

简单的ASP计数器simplecounter.asp代码及注释:

<%
CountFile=Server.MapPath("simplecounter.txt")
' 文件aspconter.txt是用来储存数字的文本文件,初始内容一般是0
Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.OpenTextFile(CountFile,1,FALSE,FALSE)
counter=Out.ReadLine
' 读取计数器文件中的值
Out.Close
'关闭文件
SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.CreateTextFile(CountFile,TRUE,FALSE)
Application.lock
' 方法Application.lock禁止别的用户更改计数器的值
counter= counter + 1
'计数器的值增加1
Out.WriteLine(counter)
' 把新的计数器值写入文件
Application.unlock
'使用方法Application.unlock后,允许别的用户更改计数 器的值
Response.Write("您是第")
Response.Write("<font color=red>")
Response.Write(counter)
' 把计数器的值传送到浏览器,以红(red)色显示给用户
Response.Write("</font>")
Response.Write(" 位访问者")
Out.Close
'关闭文件
%>

2

随着网络大行其道,网页计数器也流行起 来。事实上大多数网站均有网页计数器,用以反映该网站的访问量。计数器的来源很广,Frontpage等网页编辑器自带了网页计数器,有的站点也提供免费 的计数器下载。其实熟悉了ASP编程后,自己做一个计数器很容易。下面介绍一种实现方法。
计数器原理是:在第一次使用网页时置初始值1,以后每请 求网页一次,将计数器值加1。这样我们只要在服务器上放置一个文本文件counter.txt,文本文件的内容有计数器的值,以后每请求一次页面,读出文 本文件的计数器的数值,加1显示,然后再将原来的值改变为加1后的值,保存到文本文件。至于初始置1,在服务器上可先不建counter.txt,在网页 中,先判断服务器上是否有counter.txt文件,没有就生成counter.txt,在counter.txt中写入1,网页上显示计数器值1,完 成初始置1。以后每次只要到指定目录下将counter.txt文件删除即可置初始值。

具体操作时要有显示数字0、1、2….9的图像文 件,0.gif、1.gif、2.gif…9.gif,文件不能太大,一般18*25即可。将你要放计数器的网页布局设计完毕,再改成ASP文件,将下面 代码输入到要显示计数器的地方,使用时,程序将自动在虚拟目录count下建立counter.txt文件。置初始值时将文件删除即可。对了,虚拟目录 count必须给everyone有写的权限。
〈%
Const ForReading = 1, ForWriting = 2, ForAppending =3
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
filepath=server.mappath("/count")
filename=filepath+"/counter.txt"
set fs=createobject("scripting.filesystemobject")
if fs.fileexists(filename) then


set f=fs.getfile(filename)
Set ts = f.OpenAsTextStream(ForReading,
TristateUseDefault)
s=ts.readline+1
ts.close
else
fs.createtextfile(filename)
set f=fs.getfile(filename)
s=1
end if

'向counter.txt中写数据
Set ts = f.OpenAsTextStream(ForWriting,
TristateUseDefault)
ts.writeline(cstr(s))
ts.close

'显示计数器
s=cstr(s+1000000)
s=mid(s,2,6)
for I=1 to 6
response.write "〈img src='../images/"&mid(s,I,1)
&".gif' width='18' height='25'>"
next

%>
性急的朋友要问,你的这个计数器值显示6位计数,如果要显示8位计 数,怎么办?别着急,等我讲完下一个例子我会给一个通式的。
这个计数器有一个缺点,就是每次刷新页面计数器都加1,这是因为每刷新一次页面,系统 认为你重新请求页面;而且,如果你不从主页面进入网站,计数器不会改变计数。如果想要


更精确一点,只要将上面的代码略加修改,放 到你的global.asa的session_onstart中,这样,只有新用户进入网站,计数器才会加1。已经进入网站的用户刷新页面,不 会引起计数器计数的改变,而且不管你从哪个页面进站,计数器都能捕捉到你。
〈script language=vbscript runat=server>
sub application_onstart
filepath=server.mappath("/count")
filename=filepath+"/counter.txt"
set fs=createobject("scripting.filesystemobject")
if not fs.fileexists(filename) then
fs.createtextfile(filename)
set f=fs.getfile(filename)
s=1
Set ts = f.OpenAsTextStream(2, -2)
ts.writeline(cstr(s))
ts.close
else
set f=fs.getfile(filename)
Set ts = f.OpenAsTextStream(1, -2)
s=ts.readline+1
ts.close
end if
application(“visitor”)=s
end sub

sub session_onstart
session.timeout=5
application(“visitor”)=application(“visitor”)+1
set f=fs.getfile(filename)
Set ts = f.OpenAsTextStream(2, -2)

 

ts.writeline (cstr(application(“visitor”)))
ts.close
end sub
〈/script>
在 网页相应部分根据application(“visitor”)的值显示计数器的图像。
〈%
s=cstr(application("visitor")+10^6)
s=mid(s,2,6)
for I=1 to 6
response.write "〈img src='../images/"
&mid(s,I,1)&".gif' width='18' height='25'>"
next
%>
要显示n位计数器只要将上面代码改为:
〈%
s=cstr(application(“visitor”)+10 ^n)
s=mid(s,2,n)
for I=1 to n
response.write "〈img src='../images/"
&mid(s,I,1)&".gif' width='18' height='25'>"
next
%>

这样要得到8位计数器,只要加上n=8即可。

要是 觉得每次有用户进入网站,均对counter.txt写入太频繁,可以在session_onstart中设置,在application

(“visitor”)为十的倍数时将计数值写进counter.txt。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值