Cookie/Session的區別:Cookie
是透過客戶端紀錄訊息確定使用者身份Session
是透過在伺服器端紀錄訊息確定使用者身份
Session
物件用於在使用者訪問網站時維護會話資訊。Session
物件,並將其與該使用者相關聯。Session
物件會存儲有關使用者的信息,比如使用者的身份識別和設置。HTTP
協議的無狀態性,伺服器不會知道使用者是誰以及他們在網站上的活動。ASP
通過為每個使用者創建一個唯一的 cookie
來解決這個問題,該 cookie
包含用戶的身份信息。Session
物件中的變量僅保存一個單獨用戶的信息,而不是所有用戶的信息。Session
物件中的變量在整個應用程式中的所有頁面都是可用的,因此可以在不同頁面間共享信息。Session
物件,並在會話過期時銷毀該 Session
物件。總結來說,Session 物件是 ASP 中一個重要的功能,用於維護用戶會話的狀態信息,從而實現用戶在網站上的個性化體驗和功能。
Global.asa
file包含Session_OnStart
Session
的變數當中<object>
標記實例化具有session
範圍的對象下面內容是腦補來的,參考看看...至於對不對還請指教
Global.asa
fileSub Session_OnStart
在Session開始時執行的程式碼
End Sub
Session
的變數<%
Session("username") = "John"
%>
<object>
標記<object id="MySessionObject" runat="Server" scope="Session" ProgID="MyApp.MyClass"></object>
如果使用者在指定時間內未要求或重新整理應用程式中的頁面,則會話結束。
這就好像你今天登入了某個要登入帳號密碼的網站,結果你掛在上面太久,再次切到那個網頁的時候
原本登入的狀態已經變為登出,顯示的畫面是登入的畫面。
在ASP
中預設的時間是二十分鐘,然而如果要調整這個時間的話則要參考下方的程式碼Session.Timeout
方法
<%
Session.Timeout=5
%>
如果要立即結束的話則是...Session.Abandon
方法,但我不知道實務上這個方法的概念是如何應用
我猜會不會就像ChatGPT 4.0
需要付費的一樣,雖然我們已經登入開始使用,但是僅限免費的3.5
版本
如果你切換到4.0
版本,則立即停止你做任何使用,並顯示相關的欄位視窗要你購買升級,我猜而已...
<%
Session.Abandon
%>
<%
Session("username")="Donald Duck"
Session("age")=50
%>
此程式碼中創建了兩個Session
變數,分別為username
及age
,用來儲存使用者的姓名和年齡
而當值已經被存入之後,我們就可以在任何的頁面獲取到
Welcome <%Response.Write(Session("username"))%>
並且也可以依據使用者的偏好,來返回對應頁面
<%If Session("screenres")="low" Then%>
This is the text version of the page
<%Else%>
This is the multimedia version of the page
<%End If%>
像這段範例就表示使用者的螢幕解析度如果比較低的話,就給予文字版的網頁(概念上是這樣)
Contents
這個集合包含了所有的Session
變數
因此我們可以使用當中Remove
的方法
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
如果Session
變數「age」
的值低於 18
,下面的範例將刪除Session
變數「sale」
感覺是在表示如果這個人還未成年,就不販賣...
此外,也有移除全部Session
變數的用法
<%
Session.Contents.RemoveAll()
%>
<%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>
一樣會用到Contents
這個集合
<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
Response.Write(Session.Contents(i) & "<br>")
Next
%>
另外還可以透過Session.Contents.Count
這個方法得到Contents
集合中有幾個Session
變數
在迴圈進行後,Session.Contents(i)
得到的是變數的值
前面的Session.Contents
則是得到變數名稱
如果是StaticObjects
這個集合的話,則可以透過下方的程式碼來直接列印出當中的值
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>