Session對象
發表時間:2023-08-22 來源:明輝站整理相關軟件相關文章人氣:
[摘要]Session其實指的就是訪問者從到達某個特定主頁到離開為止的那段時間。每一訪問者都會單獨獲得一個Session。在Web應用程序中,當一個用戶訪問該應用時,Session類型的變量可以供這個用戶在...
Session其實指的就是訪問者從到達某個特定主頁到離開為止的那段時間。每一訪問者都會單獨獲得一個Session。在Web應用程序中,當一個用戶訪問該應用時,Session類型的變量可以供這個用戶在該Web應用的所有頁面中共享數據;如果另一個用戶也同時訪問該Web應用,他也擁有自己的Session變量,但兩個用戶之間無法通過Session變量共享信息,而Application類型的變更則可以實現站點多個用戶之間在所有頁面中共享信息。
1、SessionID屬性
該屬性返回當前會話的唯一標志,為每一個Session分配不同的編號。
我曾在開發過程中就遇到對用戶的控制問題。它要實現的功能就是,針對某個網站的一個模塊,當一個會員登錄后正在看此模塊時,另一個人用同樣的會員名登錄,就不能瀏覽這個模塊。也就是說一個會員名同時只能一個人瀏覽此模塊。我通過用會員名(假設為UserID,唯一)和SessionID來實現了控制。當會員登錄時,給這個會員一個Session記錄登錄狀態如:Session("Status")="Logged",同時把這個會員的Session.SessionID寫入數據庫。當他要瀏覽此模塊時,先判斷其是否登錄,若已經登錄再判斷它的SessionID是否與數據庫記錄的相同,如果不同則不能訪問。這樣,當另一個用戶用相同的會員名登錄時,那么數據庫中記錄的就是新的SessionID,前者訪問此模塊時就不能通過檢查。這就實現了一個會員名同時只能一個人瀏覽某個模塊。這個功能在一些收費網站有很有特別作用,它防止了一個會員名給多個人瀏覽的問題,為公司保障了利益。
2、TimeOut屬性
該屬性用來定義用戶Session對象的時限。如果用戶在規定的時間內沒有刷新網頁,則Session對象就會終止。一般默認為20分鐘。
3、Abandon方法
該方法是Session對象的唯一方法,可以清除Session對象,用來消除用戶的Session對象并釋放其所占的資源。如: <% Session.Abandon %>
4、Session_OnStart和Session_OnEnd事件
和Application一樣,當對象的例程每一次啟動時觸發Session_OnStart事件,然后運行Session_Onstart事件的處理過程。也就是說,當服務器接收到應用程序中的URL的HTTP請求時,觸發此事件,并建立一個Session對象。同理,這個事件也必須定在Global.asa文件中。
當調用Session.Abandon方法時或者在TimeOut的時間內沒有刷新,這會觸發Session_OnEnd事件,然后執行里面的腳本。Session變量與特定的用戶相聯系,針對某一個用戶賦值的Session變量是和其他用戶的Session變量完全獨立的,不會存在相互影響。
Session應用一列:
與Application一樣,一個被定義為Session類型的數組只能將整個數組作為一個對象,用戶不能直接改變Session數組中某個元素的值。為了創建一個Session數組,需先定義一個普通的數組,并對它的每一個元素賦初值,最后把它定義為一個Session數組。如:
<%
dim array()
array=array("jeff","zhu","male")
Session("info")=array
Response.write Session("info")(0) &"-"
Response.write Session("info")(1) &"-"
Response.write Session("info")(2) &"<br>"
%>
<hr>
<%
array(0)="jun"
array(1)="li"
array(2)="female"
Session("info")=array
Response.write Session("info")(0) & "-"
Response.write Session("info")(1) & "-"
Response.write Session("info")(2) & "<br>"
%>
以上這段程序輸出結果是:
jeff-zhu-male
_____________
jun-li-female