推薦:解讀如何正確使用ASP中的Session對像變量使用ASP的人都知道,Session對象存儲特定的用戶會話所需的信息,當用戶在應用程序的頁之間跳轉時,存儲在Session對像中的變量不會清除,而用戶在應用程序中訪問頁面時,這些變量始終存在。它可以減少程序的複雜性提高編程效率,但它同樣存在許多缺陷,本文對
一、屬性1、SessionID
SessionID屬性返回用戶的會話標識。在創建會話時,服務器會為每一個會話生成一個單獨的標識。會話標識以長整形數據類型返回。在很多情況下SessionID可以用於WEB頁面註冊統計。
2、TimeOut
Timeout屬性以分鐘為單位為該應用程序的Session對象指定超時時限。如果用戶在該超時時限之內不刷新或請求網頁,則該會話將終止。
二、方法
Session對象僅有一個方法,就是Abandon,Abandon方法刪除所有存儲在Session對像中的對象並釋放這些對象的源。如果您未明確地調用Abandon方法,一旦會話超時,服務器將刪除這些對象。當服務器處理完當前頁時,下面示例將釋放會話狀態。
<%Session.Abandon%>
三、事件
Session對像有兩個事件可用於在Session對象啟動和釋放是運行過程。
1、Session_OnStart事件在服務器創建新會話時發生。服務器在執行請求的頁之前先處理該腳本。 Session_OnStart事件是設置會話期變量的最佳時機,因為在訪問任何頁之前都會先設置它們。
儘管在Session_OnStart事件包含Redirect或End方法調用的情況下Session對象仍會保持,然而服務器將停止處理Global.asa文件並觸發Session_OnStart事件的文件中的腳本。
為了確保用戶在打開某個特定的Web頁時始終啟動一個會話,就可以在Session_OnStart事件中調用Redirect方法。當用戶進入應用程序時,服務器將為用戶創建一個會話並處理Session_OnStart事件腳本。您可以將腳本包含在該事件中以便檢查用戶打開的頁是不是啟動頁,如果不是,就指示用戶調用Response.Redirect方法啟動網頁。程序如下:
<SCRIPTRUNAT=ServerLanguage=VBScript>
SubSession_OnStart
startPage=/MyApp/StartHere.asp
currentPage=Request.ServerVariables(SCRIPT_NAME)
ifstrcomp(currentPage,startPage,1)then
Response.Redirect(startPage)
endif
EndSub
</SCRIPT>
上述程序只能在支持cookie的瀏覽器中運行。因為不支持cookie的瀏覽器不能返回SessionIDcookie,所以,每當用戶請求Web頁時,服務器都會創建一個新會話。這樣,對於每個請求服務器都將處理Session_OnStart腳本並將用戶重定向到啟動頁中。
2、Session_OnEnd事件在會話被放棄或超時發生。
關於使用Session對象需要注意的事項Application對象相近,請參照前文。
會話可以通過以下三種方式啟動:
1、一個新用戶請求訪問一個URL,該URL標識了某個應用程序中的.asp文件,並且該應用程序的Global.asa文件包含Session_OnStart過程。
2、用戶在Session對像中存儲了一個值。
3、用戶請求了一個應用程序的.asp文件,並且該應用程序的Global.asa文件使用<OBJECT>標籤創建帶有會話作用域的對象的實例。
如果用戶在指定時間內沒有請求或刷新應用程序中的任何頁,會話將自動結束。這段時間的默認值是20分鐘。可以通過在Internet服務管理器中設置應用程序選項屬性頁中的會話超時屬性改變應用程序的默認超時限制設置。應依據您的Web應用程序的要求和服務器的內存空間來設置此值。例如,如果您希望瀏覽您的Web應用程序的用戶在每一頁僅停留幾分鐘,就應該縮短會話的默認超時值。過長的會話超時值將導致打開的會話過多而耗盡您的服務器的內存資源。對於一個特定的會話,如果您想設置一個小於默認超時值的超時值,可以設置Session對象的Timeout屬性。例如,下面這段腳本將超時值設置為5分鐘。
<%Session.Timeout=5%>
當然你也可以設置一個大於默認設置的超時值,Session.Timeout屬性決定超時值。你還可以通過Session對象的Abandon方法顯式結束一個會話。例如,在表格中提供一個退出按鈕,將按鈕的ACTION參數設置為包含下列命令的.asp文件的URL。
<%Session.Abandon%>
分享:ASP如何防止表單重複提交用戶提交表單時經常會遇到一些意外情況,比如多次刷新頁面、按了後退鍵等,如果不採取控制措施就會引起表單重複提交的問題。 本文介紹的這種防止方法, 主要由四個子程序組成,在較為簡單的應用場合,你只要將這些代碼放在包含文件中直接引用即可;對於那些