ASP對像中除了用於發送(Response)、接收和處理數據(requeest)、服務器訪問(Server)的對像外,還有一些非常實用的標記Active Server應用程序(Application)和單個用戶信息(Session)的對象。
Session對象
該對像在ASP使用中佔相當大的比例。由於網頁是一種無狀態程序,無法得知用戶瀏覽狀態。在ASP中,通過Session對象來記錄使用者私有的數據變量,以作為用戶再次對服務器提出要求時做確認,用戶在程序的Web頁面之間跳轉時,存在Session對像中的變量將不會消失。
這些真的是很重要的功能,尤其是有會員的系統必須要用到的。像是會員的登入賬號、時間、狀態以及許許多多該記錄的實時數據(如購物系統記錄使用者的購物籃內的商品),這些信息屬於各使用者私人所需要,通常開發者都是使用Session 記錄處理。
在ASP中的Session是使用Cookies構成,服務器將所有的Session內記錄的數據,以Cookies的方式傳至用戶的瀏覽器。通常一般瀏覽器會將這些Cookies存起來,每當使用者點選連結,再次與服務器做聯機時,瀏覽器就會把這些Cookies傳回Server供做處理:這即是Session的運作原理。由此可知會話狀態Session僅在支持cookie的瀏覽器中保留,如果客戶關閉了Cookie 選項Session也就不能發揮作用了。
一、Session.SessionID
SessionID 屬性返回用戶的會話標識。在創建會話時,服務器會為每一個會話生成一個單獨的標識,會話標識以長整形數據類型返回。在很多情況下SessionID 可以用於WEB 頁面註冊統計。
利用該屬性可以解決一種對用戶的控制問題。該問題的主要功能就是,針對某個網站的一個模塊,當一個會員登錄後正在看此模塊時,另一個人用同樣的會員名登錄,就不能瀏覽這個模塊:也就是說一個會員名同時只能一個人瀏覽此模塊。
通過用會員名(假設為UserID,唯一)和SessionID來實現了控制。當會員登錄時,給這個會員一個Session記錄登錄狀態如:Session("Status")="Logged",同時把這個會員的Session.SessionID寫入數據庫。當他要瀏覽此模塊時,先判斷其是否登錄,若已經登錄再判斷它的SessionID是否與數據庫記錄的相同,如果不同則不能訪問。
這樣,當另一個用戶用相同的會員名登錄時,那麼數據庫中記錄的就是新的SessionID,前者訪問此模塊時就不能通過檢查。這就實現了一個會員名同時只能一個人瀏覽某個模塊。這個功能在一些收費網站有很有特別作用,它防止了一個會員名給多個人瀏覽的問題,為公司保障了利益。
<%=Session.SessionId%> 是單獨生成的唯一ID標識,可刷新調試。 |
二、Session.TimeOut