計數器|設計|詳解 Active Server Pager(動態伺服器首頁,簡稱ASP),通過讀寫伺服器的檔案,結合script語言(VBscript或Jscript)和html碼可以方便地實現頁面計數器功能。現流行的ASP教材和網路上的ASP教程都談到過ASP計數器的設計問題,但是都過於簡單,比如沒有提到怎樣實現計數器指令碼和首頁面的分離以及圖象計數器的實現等。下面就作者為單位製作NT web網站的經驗,舉執行個體循序漸進談談關於ASP計數器的設計,希望能給ASP的初學者和對ASP WEB編程有興趣的網友一些啟發。
(一)簡單的計數器
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
'關閉檔案
%>
(二)與頁面分離的計數器
實際應用中,首頁面與計數器程式是分離的,既只要在需要計數的頁面中加入一句引用代碼就可以實現頁面計數。我們在網上經常申請使用的免費計數器就是這樣,不過它們一般是CGI做的。這裡,我們只要稍微修改一下前面我們用ASP做的簡單計數器,然後在頁面加入一句JavaScript語句引用它,就實現了與頁面分離的計數器功能。這樣,無論是作為首頁面的計數器還是為某個特定頁面的計數,都很方便了。顯然,你需要簡單更改一下存放計數器值的檔案名稱和計數器asp原始碼檔案名稱就可以實現多個計數器。
與頁面分離的計數器txtcounter.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
%>
在要計數的頁面加入如下的代碼:
<p>
您是第
<font color=red>
<script language="JavaScript" src=,...(圖象自己可以用Photoshop等工具製作,或者從網路上下載)。這裡我們要用到VBScript函數Len(string | varname)、Mid(string,start[,length])。由Len(counter)可得到計數器值的位元,由Mid(counter,i,1)可以得到計數器值的第i位上的數字,我們可利用這個值來調用相應的數字圖象。用For迴圈語句,我們不難得出計數器值各個位上的數字並轉化成對應的數字圖象,這樣,我們就能實現文本數值到圖象數位轉變。下面就是一個用ASP編寫的圖象計數器執行個體,因為大部分代碼前面都分析過,所以代碼中只注釋了部分語句。
與頁面分離的圖象計數器imgcounter.asp代碼:
<% @language="VBScript"%>