Session 對象有兩個事件:即 OnStart 事件和 OnEnd 事件。通過對這兩個事件過程編寫腳本可以在會話開始和結束時執行指定的操作。編寫這些事件過程的腳本代碼時,必須使用 SCRIPT 標記並將 RUNAT 屬性設置為 Server ,而不能使用一般的 ASP 腳本定界符<% 和 %>;這些事件過程的腳本代碼必須包含在一個名為 global.asa 的文件中,而該文件必須存放在應用程序的根目錄中。
1、Session_OnStart 事件
Session_OnStart事件是在服務器創建新會話時發生。服務器在執行請求的頁之前先處理該腳本。Session_OnStart事件是設置會話期變量的最佳時機,因為在訪問任何頁之前都會先執行它們。
當會話開始時觸發Session_OnStart事件,然後運行Session_Onstart事件的處理過程。也就是說,當服務器接收到應用程序中的URL的HTTP請求時,觸發此事件,並建立一個Session對象。
2、實例
在下在的例子中,通過 Session_OnStart 事件過程對會話變量 UserName 和 Password 進行初始化。代碼如下:
<Script Language="VBScript" Runat="session">
Sub Session_OnStart
Session("UserName")="未知"
Session("Password")="未知"
End Sub
</Script>
假如不希望用戶第一次訪問時直接進入主頁之外的其他頁面,可以在 Session_OnStart 過程中對用戶請求的頁面路徑與主頁路徑進行比較,如果不相同,則調用 Response.Redirect 方法將用戶引導到主頁。腳本如下:
<Script language="VBScript" runat="server">
sub session_OnStart
homePage="/myasp/index.asp"
requestpage=Request.ServerVariables("SCRIPT_NAME")
if homePage<>RequestPage then
response.Redirect homePage
end if
end sub
</script>
3、測試這段代碼
首先我們建一個別名為 “myasp” 的虛似目錄,將 global.asa 文件保存到這個虛擬目錄下,再建一個名為 “index.asp" 的簡單主頁也放到這個虛擬目錄下,然後在這個虛擬目錄下建一個名為 1 的子目錄,再建一個名為 1.asp 的簡單頁面放到這個子目錄下。最後在地址欄內輸入地址: http://127.0.0.1/myasp/1/1.asp, 回車後,你會發現顯示的是 index.asp 頁面,地址欄內自動將地址轉換成127.0.0.1/myasp/index.asp。這表明:當客戶第一次登錄到 http://127.0.0.1/myasp/1/1.asp 頁面,先調用 session_OnStart 事件,在這個事件中通過 Request 對象的 ServerVariables 集合中的 "SCRIPT_NAME" 環境變量獲得當前頁面的虛擬路徑,然後與你指定的頁面路徑進行比較,如果兩者不一樣,則通過 response 對象的 Redirect (重定向)方法將頁面重新指向你指定的頁面。
4、Session_OnEen 事件
當調用 Session.Abandon 方法或在超時時限內沒有請求或刷新頁面,便發生該事件並執生 Sessiot_End 事件過程,相應的 Session 對象隨之自動結束。
在下面的例子中,通過事件過程 Session_OnEnd 將用戶標識和結束會話的時間添加到站點日志文件中。
<script language="vbscript" runat="server">
sub session_OnEnd
response.AppendTolog Session.SessionID & Timer()
end sub
</script>