當然要學(xué)ASP或者PHP之類的動態(tài)網(wǎng)頁技術(shù)。
網(wǎng)上有很多這方面的代碼,自己仔細研究下一定沒問題了。
active server pager(動態(tài)active server pager(動態(tài)服務(wù)器主頁,簡稱asp),通過讀寫服務(wù)器的文件,結(jié)合script語言(vbscript或能?,F(xiàn)流行的asp教材和網(wǎng)絡(luò)上的asp教程都談到過asp計數(shù)器的設(shè)計問題,但是都過于簡單,比如沒有提到怎樣實現(xiàn)計數(shù)器腳本和主頁面的分離以及圖象計數(shù)器的實現(xiàn)等。下面就作者為單位制作nt web站點的經(jīng)驗,舉實例循序漸進談?wù)勱P(guān)于asp計數(shù)器的設(shè)計,希望能給asp的初學(xué)者和對asp web編程有興趣的網(wǎng)友一些啟發(fā)。
(一)簡單的計數(shù)器
asp內(nèi)含五個內(nèi)置的"active server components"(activex服務(wù)器組件),即database access component(數(shù)據(jù)庫訪問組件)、file access component(文件訪問組件)、ad rotator component(廣告輪播器組件)、brower capabilities component(瀏覽器信息組件)、content linking component(內(nèi)容鏈接組件)。我們下面要設(shè)計的計數(shù)器,就是通過其中的file access component(文件訪問組件)來讀寫服務(wù)器文件來實現(xiàn)。算法思路是:在服務(wù)器端用一個文本(ascii)文件存放計數(shù)數(shù)值,每當頁面被訪問時就從文件中讀出數(shù)值,顯示給用戶,并且使數(shù)值加1,把增加后的數(shù)值寫回到文件。
寫入數(shù)據(jù)到一個服務(wù)器計數(shù)文件的asp語句和說明如下:
counfile=server.mappath("用來存放計數(shù)器值的文件名")
server服務(wù)器訪問方法mappath(path)是將存放計數(shù)器值的文件所在的路徑 轉(zhuǎn)換成物理路徑
set fileobject=server.createobject("scripting.filesystemobject")
使用方法createobject定義對象filesystemobject
set outstream=server.createtextfile(fileobject,true,false)
使用對象filesystemobject提供方法createtextfile產(chǎn)生文本文件,其中參 數(shù)"true"表示覆蓋原來的文件,"false"表示文件為ascii類型
outstream.writeline "要寫入的數(shù)據(jù)"
outstream.writeline為往文件寫入一行數(shù)據(jù)
從一個服務(wù)器文件讀取數(shù)據(jù)的asp語法如下:
counfile=server.mappath("用來存放計數(shù)器值的文件名")
set fileobject=server.createobject("scripting.filesystemobject")
set instream=server.opentextfile(fileobject,1,false,false)
使用對象filesystemobject提供方法opentextfile產(chǎn)生文本文件,
其中參數(shù)"true"表示覆蓋原來的文件,"false"表示文件為ascii類型
"要讀取的數(shù)據(jù)"=instream.readline
其中instream.readline為從文件中讀取的一行數(shù)據(jù)
下面是一個用asp實現(xiàn)頁面計數(shù)器功能的計數(shù)器例子(simplecounter.asp),我在代碼中詳細注釋了語句。你可以把以下代碼粘貼到你需要計數(shù)的頁面代碼中。當然,你的服務(wù)器必須支持asp,且你已經(jīng)在主頁所在的目錄下創(chuàng)建了一個內(nèi)容為0的文本文件simplecounter.txt。
簡單的asp計數(shù)器simplecounter.asp代碼及注釋:
<%
countfile=server.mappath("simplecounter.txt")
文件aspconter.txt是用來儲存數(shù)字的文本文件,初始內(nèi)容一般是0
set fileobject=server.createobject("scripting.filesystemobject")
set out=fileobject.opentextfile(countfile,1,false,false)
counter=out.readline
讀取計數(shù)器文件中的值
out.close
關(guān)閉文件
set fileobject=server.createobject("scripting.filesystemobject")
set out=fileobject.createtextfile(countfile,true,false)
application.lock
方法application.lock禁止別的用戶更改計數(shù)器的值
counter= counter + 1
計數(shù)器的值增加1
out.writeline(counter)
把新的計數(shù)器值寫入文件
application.unlock
使用方法application.unlock后,允許別的用戶更改計數(shù)器的值
response.write("您是第")
response.write("<font color=red>")
response.write(counter)
把計數(shù)器的值傳送到瀏覽器,以紅(red)色顯示給用戶
response.write("</font>")
response.write("位訪問者")
out.close
關(guān)閉文件
%>
(二)與頁面分離的計數(shù)器
實際應(yīng)用中,主頁面與計數(shù)器程序是分離的,既只要在需要計數(shù)的頁面中加入一句引用代碼就可以實現(xiàn)頁面計數(shù)。我們在網(wǎng)上經(jīng)常申請使用的免費計數(shù)器就是這樣,不過它們一般是cgi做的。這里,我們只要稍微修改一下前面我們用asp做的簡單計數(shù)器,然后在頁面加入一句javascript語句引用它,就實現(xiàn)了與頁面分離的計數(shù)器功能。這樣,無論是作為主頁面的計數(shù)器還是為某個特定頁面的計數(shù),都很方便了。顯然,你需要簡單更改一下存放計數(shù)器值的文件名和計數(shù)器asp源代碼文件名就可以實現(xiàn)多個計數(shù)器。
與頁面分離的計數(shù)器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&")"
為了在頁面正確顯示計數(shù)器的值,調(diào)用vbscript函數(shù)document.write
out.close
%>
在要計數(shù)的頁面加入如下的代碼:
<p>
您是第
<font color=red>
<script language="javascript" src="http://www.ct263.net/ctnetbar/uploadfiles/200510/20051031205542121.gif,...(圖象自己可以用photoshop等工具制作,或者從網(wǎng)絡(luò)上下載)。這里我們要用到vbscript函數(shù)len(string | varname)、mid(string,start[,length])。由len(counter)可得到計數(shù)器值的位數(shù),由mid(counter,i,1)可以得到計數(shù)器值的第i位上的數(shù)字,我們可利用這個值來調(diào)用相應(yīng)的數(shù)字圖象。用for循環(huán)語句,我們不難得出計數(shù)器值各個位上的數(shù)字并轉(zhuǎn)化成對應(yīng)的數(shù)字圖象,這樣,我們就能實現(xiàn)文本數(shù)值到圖象數(shù)字的轉(zhuǎn)變。下面就是一個用asp編寫的圖象計數(shù)器實例,因為大部分代碼前面都分析過,所以代碼中只注釋了部分語句。
與頁面分離的圖象計數(shù)器imgcounter.asp代碼:
<% @language="vbscript"%>
<%
dim images(20)
定義一數(shù)組,用來存放顯示每一位數(shù)字圖象的語句
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)
得到計數(shù)器值的位數(shù)
for i=1 to countlen
images(i)="<img src="&"http://202.101.209.75/asptemp/counter/images/"&"/" & mid(counter,i,1) & ".gif></img>"
由循環(huán)語句得到各個位上數(shù)值對應(yīng)圖象的顯示代碼(html),并把它存在數(shù)組中
具體使用時請注意圖象的實際服務(wù)器及目錄路徑
response.write"document.write("&images(i)&");"
調(diào)用函數(shù)document.write輸出顯示數(shù)字圖象的html代碼
next
out.close
%>
在要計數(shù)的頁面加入如下的代碼:
<p>
您是第
<script language="javascript" src="http://202.101.209.75/asptemp/counter/imgcounter.asp">
//引用時注意asp計數(shù)器所在的服務(wù)器及目錄路徑。
</script>
位來客
</p>
附注:以上asp計數(shù)器均在windows nt server 4.0(中文) / iis3.0 下測試通過。以下任何一種環(huán)境都可執(zhí)行asp:
一、windows nt server 4.0 / iis3.0以上
二、windows nt workstation 4.0 / microsoft peer web service3.0以上
三、windows 95/98 / microsoft personal web server 1.0a以上
- 為最佳答案評分?
-
好 100% (1)
-
不好 0% (0)
- (目前有 1 個人評價)