選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

ASP Session 物件


Session 物件用於儲存使用者資訊或更改使用者會話的設定。


Session 物件

當你在電腦上使用一個應用程式時,你會開啟它,進行一些更改,然後關閉它。這就像一個 Session。電腦知道你是誰。它知道你何時開啟應用程式以及何時關閉它。然而,在網際網路上有一個問題:Web 伺服器不知道你是誰,也不知道你在做什麼,因為 HTTP 地址不維護狀態。

ASP 透過為每個使用者建立一個唯一的 Cookie 來解決這個問題。Cookie 被髮送到使用者的計算機,它包含識別使用者的資訊。這個介面被稱為 Session 物件。

Session 物件儲存使用者資訊或更改使用者會話的設定。

儲存在 Session 物件中的變數儲存有關單個使用者資訊,並且在同一個應用程式中的所有頁面都可以訪問。通常儲存在會話變數中的資訊包括姓名、ID 和偏好。伺服器為每個新使用者建立一個新的 Session 物件,並在會話過期時銷燬該 Session 物件。


Session 何時開始?

當以下情況發生時,會話開始:

  • 新使用者請求一個 ASP 檔案,並且 Global.asa 檔案包含一個 Session_OnStart 過程。
  • 將值儲存在 Session 變數中。
  • 使用者請求一個 ASP 檔案,並且 Global.asa 檔案使用 <object> 標籤來例項化一個具有會話範圍的物件。

Session 何時結束?

如果使用者在應用程式中沒有請求或重新整理頁面達到指定時間(預設為 20 分鐘),則會話結束。

如果你想設定一個比預設值更短或更長的超時間隔,請使用 Timeout 屬性。

下面的示例將超時間隔設定為 5 分鐘。

<%
Session.Timeout=5
%>

使用 Abandon 方法可以立即結束會話。

<%
Session.Abandon
%>

注意: 會話的主要問題在於何時應該結束。我們不知道使用者的最後一次請求是否是最終請求。因此,我們不知道應該將會話“保持活動”多久。等待一個空閒會話過長時間會佔用伺服器資源,但如果會話過早刪除,使用者將不得不重新開始,因為伺服器已刪除所有資訊。找到正確的超時間隔可能很困難!

提示: 只在會話變數中儲存少量資料!



儲存和檢索 Session 變數

Session 物件最重要的特點是你可以將變數儲存在其中。

下面的示例將 Session 變數 username 設定為“Donald Duck”,並將 Session 變數 age 設定為“50”。

<%
Session("username")="Donald Duck"
Session("age")=50
%>

當值儲存在會話變數中時,可以從 ASP 應用程式中的任何頁面訪問它。

歡迎 <%Response.Write(Session("username"))%>

上面的行返回:“Welcome Donald Duck”。

你也可以將使用者偏好儲存在 Session 物件中,然後訪問該偏好來選擇要返回給使用者的頁面。

如果使用者螢幕解析度較低,下面的示例將指定頁面的純文字版本。

<%If Session("screenres")="low" Then%>
  這是頁面的文字版本
<%Else%>
  這是頁面的多媒體版本
<%End If%>

移除 Session 變數

Contents 集合包含所有會話變數。

可以使用 Remove 方法移除會話變數。

如果會話變數 "age" 的值小於 18,下面的示例將移除會話變數 "sale"。

<%
If Session.Contents("age")<18 then
  Session.Contents.Remove("sale")
End If
%>

要移除會話中的所有變數,請使用 RemoveAll 方法。

<%
Session.Contents.RemoveAll()
%>

迴圈遍歷 Contents 集合

Contents 集合包含所有會話變數。你可以迴圈遍歷 Contents 集合,檢視其中儲存了什麼。

<%
Session("username")="Donald Duck"
Session("age")=50

dim i
For Each i in Session.Contents
  Response.Write(i & "<br>")
下一步
%>

結果

username
age

如果你不知道 Contents 集合中的專案數量,可以使用 Count 屬性。

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
  Response.Write(Session.Contents(i) & "<br>")
下一步
%>

結果

Session 變數: 2
Donald Duck
50

迴圈遍歷 StaticObjects 集合

你可以迴圈遍歷 StaticObjects 集合,檢視所有儲存在 Session 物件中的物件的值。

<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br>")
下一步
%>

×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援