Posted: 2005/1月/07 9:49上午 | IP記錄
|
|
|
誰在站上的應用
好的站長都有一個很明確的目的,那就是,希望更多的訪問者進入他的站點。那麼,如果能夠瞭解當前有多少用戶在站上以及在作什麼就 十分有必要了,這樣可以根據觀察的信息來完善自己的站點。
現在這個示例就是實時的統計當前訪問者以及每一個訪問者剛進行的主頁請求。
見下面顯示結果圖17.5:
圖17.5 誰在線上
這個示例說明了怎樣將一個對像賦值給一個application對象,一個字典對像用來儲存訪問者信息,當訪問者發出了一個請求 ,這個對象就進行了更新,下面是這個應用所需要製作和修改的文件列表:
■Global.asa文件:針對這個應用Application_OnStart事件和Application_OnEnd事 件都需要進行修改。
■GrabStates文件::這個文件更新Dictionary對象,你需要在每一個想要跟蹤的ASP文件首包含這個腳本。
■WhosOn頁:就是顯示目前站上用戶以及目前狀態。
修改Global.asa文件
做這個應用項目,你需要修改兩個腳本,首先是創建一個Dictionary對象,用來存儲訪問者信息,由於這個對象的創建只需要 一次,那麼可以在application_OnStart事件中進行:
<SCRIPT LANGUAGE=VbScript RUNAT=Server>
SUB Application_OnStart
Set Application(「Stats」)=Server.CreateObject(「Scripting.Dictiona ry」)
END SUB
</SCRIPT>
只是添加了一句腳本語言。這個語句將新創建的一個Dictionary事例賦值給名字為stats的application變量 ,創建之後,在整個應用中就可以一直使用了。
注意
在application的範圍內創建對象的更多方法將在下一章中有詳盡的討論。
在一個用戶的Session結束時,我們必須把他的信息清除,這就需要修改Session_OnEnd對像:
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Session_OnEnd
IF Application(「Stats」).Exists(Session.SessionID) THEN
Application.Lock
Application(「Stats」).Remove(Session.SessionID)
Application.UnLock
END IF
END SUB
</SCRIPT>
用戶將根據他們的SessionID來被跟蹤,字典中的名字為stats的鍵與相應的Session Ids相對應,首先檢查字典中是否有有關這個已經離開的SessionID的信息,如果有,則進行刪除(因為這個用戶Sessi on已經結束了)
創建GrabStats文件
想要決定當前頁的瀏覽者,就必須在每一個要進行跟蹤的頁面前包含一個腳本文件。這個文件其實只有一行語句,見例子17.4。
例子17.4 GrabStats.asp
<%
Application(「Stats」).item(「Session.SessionID)=Request.Server Variables(「SCRIPT_NAME」)
%>
這個腳本將當前頁的路徑加入到Dictionary對像中去。當前路徑依然是通過ServerVariable變量獲得。然後, 該變量值賦值給字典中對應當前用戶ID的鍵中(如果不存在,則自動創建。)
將該腳本存為GrabStats.asp之後,那麼在你需要進行跟蹤的ASP文件首行加入這麼一句代碼<!--#INCL UDE VIRTUAL=」GrabStats.asp」 a
創建顯示誰在站上的頁面
這個主頁就是顯示當前使用者。顯示的是每一個使用者的SessionID和他的最後一次請求的頁面,下面是這個顯示頁面的全部代 碼:
例17.5 WhosOn.asp
<!-- #INCLUDE VIRTUAL=」GrabStats.asp」 -->
<%
MyServer=Request.ServerVariables(「SERVER_NAME」)
MyPath=Request.ServerVariables(「SCRIPT_NAME」)
MySelf=」Http://」&MyServer&MyPath
%>
<HTML>
<HEAD>
<META HTTP-EQUIV=」REFRESH」 CONTENT=」20;<%=MySelf%>」>
<TITLE>邁至科誰在站上應用示例之顯示頁</TITLE>
</HEAD>
<BODY>
<% Application.Lock
Set TempStats=Application(「Stats」)
Application.Unlock
%>
<Center>
當前訪問者一共<%=TempStats.Count %>個
<table Border=1 cellspacing=10>
<tr><th>訪問者ID</Th><th>當前訪問頁</th&g t;</tr>
<%
TempItems=TempStats.Items
TempKeys=TempStats.Keys
For I=0 to UBOND(TempKeys)
%>
<tr><td><%=tempKeys(i) %></td><td><%=TempItems(i) %></td></tr>
<% next %>
</center>
</table>
</Body>
</Html>
第一行包含的文件GrabStats.asp就是前面的那一部分所創建的,也就是說,該主頁的訪問情況也在跟蹤統計之內。第一個 腳本就是接受當前路徑,沒有什麼可以再解釋的,只是這次更新時間改為20秒而已。
第二個腳本是將application的字典對像變量存在一個臨時的TempStats字典對像中,這個對象會在該頁結束時自動 清除。後面的腳本則是循環顯示所有的鍵和值。顯示結果見本節部分的圖17.5。
擴展這種應用
這種應用示例對於瞭解自己的網站訪問情況是很有好處的,你可以瞭解當前網站上的訪問者,也可以瞭解他們在瀏覽哪方面的內容。
有很多種方式來使這種應用功能更加完備,例如,想要從SessionID中瞭解用戶信息太難了,如果你的網站有註冊登錄界面,那 麼在字典對像中完全可以用登錄名來代替毫無表達意義的ID值。
另外,你完全可以跟蹤用戶訪問的時間長度,這種對腳本的修改也不算複雜,例如,你只需要建立第二個application變量來 包含另一個字典對象,專門存儲用戶停留時間的信息。
注意
相關示例展示可以參見http://www.aspsite.com
總結
在這章中,你應當學會了Active Server Pages的application應用,首先是全面瞭解, 然後學會使用它的集合,屬性以及事件。最後是兩個有代表性的實例,這樣你應當對一些比較高級的ASP應用有所瞭解並能夠提升你的 網站的製作檔次。
Edited by bibi 在 2005/1月/07 9:52上午
|