說明 多數網站都有一個訪客計數器,雖然只是簡單的功能但確實是一個會自動改變的部份,具備了互動式網頁的特徵。 它運作的原理是: 1.網站內有個檔案(或資料庫)寫著目前已經有多少人來點閱這個網頁。 2.網頁開啟時ASP程式會讀取這個檔案內容,將此數字加一並顯示在網頁上。 3.將新數字寫入這個檔案(或資料庫)。 其中比較特別的是: 1.檔案的處理,通常網站不是你的私人電腦空間,檔案的路徑與權限和在自己的電腦寫程式不同。 2.訪客計數器是網站公用的變數,每個不同訪客都會同時看到一樣的這個數字。 |
標準作法如下: 網站→加入新項目→全域應用程式類別 在事件中寫程式如下: Application("變數名稱")表示一個全網站公用的變數,可以跨網頁跨使用者都共用! 它開始作用於網站開張(Application_Start),也就是網頁伺服器啟動時; 在此例中,網站開張時設定訪客人數為零! 結束於網頁伺服器關閉,一般網站開機就會啟動,網站主機關閉時就是Application_End了! Session(工作階段)則是指某個使用者進入網站開啓首頁到離開之間的時間, 在此例中使用者進入時訪客數加一! 接著請在首頁(Default.aspx)中加入一個Label,在Page_Load中用來變更計數 Label1.Text = Application("N") 此變數只在 如果不用Label也可以直接寫資料到網頁: Response.Write(Format(Val(Session("N")), "00000")) Label1.Text = Format( Val(Application("N")), "00000") Val 將文字變數轉為數字,"00000"表示沒有數字時補零 上述作法有個缺點,如果網站關閉維修,下一次開啓時訪客人數會歸零! 下面是將訪客人數隨時記在一個文字檔案(N.txt)的程式寫法,當然開站時會先讀這個檔案。 其中Server.Mappath指網站所在的絕對位置,譬如C:\Website1等等。 這樣寫即使以後網站搬到D磁碟也不必改程式! 請注意到Session_End(使用者離線)與Application_End事件(譬如斷電)通常未必會偵測到, 所以不要將記錄人數的程式寫到這兩個事件中,以免資料遺失! |
說明: 1. Server.MapPath是用來取得網站內的檔案實體路徑,在讀寫檔案時必須要知道這個路徑,但是通常我們只知道網站內要操作的檔名(在此是TextFile.txt),至於我的網站被放到伺服器的C或D磁碟等等則無從得知。因此必須用此指令找到完整路徑。 2. My.Computer.FileSystem.ReadAllText讀取整個檔案內容,在此只是一個數字。 3. My.Computer.FileSystem.WriteAllText(Fn, N, False)將新數字寫回檔案,False表示不接續寫入,就是將原數字蓋掉! 4. 上例中有些地方忽略了數字與文字的轉換,這是VB可以容許的自動轉換。 5. 請注意如果你的文字檔裡面有中文字,就一定要加入 System.Text.Encoding.Default這個參數,如: Dim N As Integer = My.Computer.FileSystem.ReadAllText(Fn, System.Text.Encoding.Default) My.Computer.FileSystem.WriteAllText(Fn, N.ToString, False, System.Text.Encoding.Default) |