網頁計數器代碼

在網站目錄下新建一個文本: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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章