在Inte.net上,用ASP编写的计数器到处都是,本人觉得再在这里谈ASP编写计数器已没有多大意义。后来想想还是有必要谈一下,因为这不仅仅只是在谈计数器的编写,而是在向大家介绍ASP的知识与应用技巧。
程序原代码如下:
$#@60;%countlong=8
′countlong定义计数器显示位数
On Error Resume Next
′ 忽略所有的错误
count=server.mappath(″count.txt″)
set cou = server.createobject(″scripting.filesystemobject″)
set out=cou.opentextfile(count,1,false,false)
counter=out.readline
out.close
′以上代码是打开文件count.txt并读取一行,读出目前计数器的值
if session(″in″)$#@60;$#@62;″in″ then
′判断用户是否已进入主页,以确保他按刷新或再次来到此页面时计数器不会再加1
session(″in″)=″in″
set out = cou.createtextfile(count,true,false)
application.lock
counter=counter+1
′计数器加1
out.writeline(counter)
application.unlock
out.close
′以上代码是建立一个新的文件count.txt并写入一行,写入加1后计数器的值
end if
co=cstr(counter)
′cstr函数用来把数字型变量转换成字符型
for i = 1 to countlong-len(co)
response.write ″″
next
′上面的循环语句是完成计数器前面的0图片的添加
′len(co)函数是得到变量co的长度,countlong-len(co)就得到前面0图片的个数
for i= 1 to len(co)
response.write ″″
next
′mid(co,i,1)函数是用来从变量co的第i位开始读一个字符%$#@62;
这个计数器做得比较成功的地方是使用session防止用户对计数器的多次刷新; 使用了文本文件记录计数器的值,虽然代码写起来比较长,但比起用application对象要好得多,因为当服务器reboot或改动global.asa时,application对象的值就会被清空; 还有就是用图片代替了字符,看起来更美观大方!
计数器的图片你可以自己设计一下,0用文件名0.gif,1用1.gif,以此类推。