ASP編程入門進階(八)
來源:互聯網
上載者:User
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,前者訪問此模組時就不能通過檢查。這就實現了一個會員名同時只能一個人瀏覽某個模組。這個功能在一些收費網站有很有特別作用,它防止了一個會員名給多個人瀏覽的問題,為公司保障了利益。