Session 物件用於儲存使用者的資訊。儲存於 session 物件中的變數持有單一使用者的信息,並且對於一個應用程式中的所有頁面都是可用的。
Session 物件
當您操作某個應用程式時,您會開啟它,做些改變,然後將它關閉。這很像對話(Session)。計算機知道您是誰。它清楚您在何時打開和關閉應用程式。但是在網際網路上有一個問題:由於 HTTP 位址無法存留狀態,web 伺服器並不知道您是誰以及您做了什麼。
ASP 透過為每位使用者建立一個唯一的 cookie 的方式解決了這個問題。 cookie 傳送至用戶端,它含有可辨識使用者的資訊。這種介面被稱為 Session 物件。
Session 物件用於儲存關於使用者的信息,或為一個使用者的 session 更改設定。儲存於 session 物件中的變數存有單一使用者的信息,並且對於應用程式中的所有頁面都是可用的。儲存於 session 物件中的資訊通常是 name、id 以及參數。伺服器會為每個新的使用者建立一個新的 Session,並在 session 到期時撤銷掉這個 Session 物件。
Session 何時開始?
Session 開始於:
*當某個新使用者要求了一個ASP 文件,並且Global.asa 文件引用了Session_OnStart 子程式時;
*當某個值儲存在Session 變數中;
*當某個使用者請求了一個ASP 文件,並且Global.asa 使用273238ce9338fbb04bee6997e5552b95 標籤透過session 的scope 來例示某個物件時;
Session 何時結束?
假如使用者沒有在規定的時間內在應用程式中請求或刷新頁面,session 就會結束。預設值為 20 分鐘。
如果您希望將逾時的時間間隔設定得更長或更短,可以設定 Timeout 屬性。
下面的範例設定了5 分鐘的逾時時間間隔:
<% Session.Timeout=5 %>
要立即結束session,可使用 Abandon 方法:
<% Session.Abandon %>
#注意:使用session 時主要的問題是它們該在何時結束。我們不會知道用戶最近的請求是否是最後的請求。因此我們不清楚該讓 session「 存活」多久。為某個空閒的 session 等待太久會耗盡伺服器的資源。然而假如 session 被過早地刪除,那麼用戶就必須一遍又一遍地重新開始,這是因為伺服器已經刪除了所有的資訊。尋找合適的超時間隔時間是很困難的。
提示:如果您正在使用 session 變量,請不要在其中儲存大量的資料。
儲存和取回session 變數
Session 物件最大的優點是可在其中儲存變量,以供後續的網頁讀取,其應用範圍是很廣的。
下面的範例把"Donald Duck" 賦值給名為username 的session 變量,並把"50" 賦值給名為age 的session 變數:
<% Session("username")="Donald Duck" Session("age")=50 %>
一旦值存入session變量,它就能被ASP 應用程式中的任何頁面使用:
Welcome 9191e841d6c4ef7e6a651b7bd17ba29e
#上面這行程式回傳的結果是: "Welcome Donald Duck"。
也可以在 session 物件中儲存使用者參數,然後透過存取這些參數來決定向使用者傳回哪個頁面。
下面的範例規定,如果使用者使用低顯示器分辨率,則傳回純文字版本的頁面:
<%If Session("screenres")="low" Then%> This is the text version of the page <%Else%> This is the multimedia version of the page <%End If%>
移除 session 变量
contents 集合包含所有的 session 变量。
可通过 remove 方法来移除 session 变量。
在下面的例子中,假如 session 变量 "age" 的值小于 18,则移除 session 变量 "sale":
<% If Session.Contents("age")<18 then Session.Contents.Remove("sale")End If %>
如需移除 session 中的所有变量,请使用 RemoveAll 方法:
<% Session.Contents.RemoveAll() %>
遍历 contents 集合
contents 集合包含所有的 session 变量。可通过遍历 contents 集合,来查看其中存储的变量:
<% Session("username")="Donald Duck" Session("age")=50 dim i For Each i in Session.Contents Response.Write(i & "<br />") Next %>
结果:
username age
如果需要了解 contents 集合中的项目数量,可使用 count 属性:
<% dim i dim j j=Session.Contents.CountResponse.Write("Session variables: " & j) For i=1 to j Response.Write(Session.Contents(i) & "<br />") Next %>
结果:
Session variables: 2 Donald Duck 50
遍历 StaticObjects 集合
可通过循环 StaticObjects 集合,来查看存储在 session 对象中所有对象的值:
<% dim i For Each i in Session.StaticObjects Response.Write(i & "<br />") Next %>
【相关推荐】
1. ASP免费视频教程
以上是關於ASP中session的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!