學習參考書ASP入門與實作(第二版)

回首頁 與我們連絡 網站地圖 加入我的最愛



 




Session 物件 

Session 物件為紀錄使用者的相關資訊,提供使用者再次對此網頁伺服器要求時作確認,例如使用者帳號與密碼的確認,有 Session 物件的建立,來保留身分認證的結果,則使用者不用於每一頁網頁 登錄時都需輸入密碼作確認。

Session 物件與 Application 物件相同,都是用來記錄『變數』值的,但是 Application 是一對多的;Session 物件則是一對一的,對於所有的連線瀏覽者而言,他們對於 Application 物件的使用是『共用』的,但是每個瀏覽連線者卻個別擁有一個『私用』的 Session 物件,若將上節 app01.asp 例子中之內容 application 改以 session替代,如下所示:(sess01.asp)



執行結果同 app01.asp 

雖然在表面上看來,結果是相同的,但是,Session 物件現在紀錄的變數資料只與目前瀏覽連線者有關,與其他的瀏覽連線者一點關係都沒有,也就是說目前所讀取的 Session 物件內容是讀取目前瀏覽連線者『私用』的 Session 物件。

Session 物件與 Application物件之不同點 :Application物件為共用之資訊,而Session卻是個別獨立 的,比較下兩圖,不同瀏覽器執行sess01.asp,其值是不累加的,由此更可證明:Session 物件紀錄的變數資料只與目前瀏覽連線者有關,與其他的瀏覽連線者一點關係都沒有


Session 物件的生命週期 起始於 PWS/IIS 瀏覽器第一次與伺服器連線時。 終止於 PWS/IIS 瀏覽器結束執行時或瀏覽器一段時間沒有向PWS/ IIS要求任何網頁時。

  1. 當我們利用 Application 來作為進站人數的計數器,是利用當有新的瀏覽連線者進入時就呼叫 Application 物件,將 Application 物件所儲存的變數資料值加一來達到計數的目的,但是,上網者只要按下瀏覽器上的『重新整理』按鈕後,你會發現計數器將會再次的自動加一,這似乎不是我們想要的。單純的 Application 計數器程式碼與執行結果,如下所列:
<%
Application.Lock
Application("counter") = Application("counter") + 1
Application.UnLock
%>

<HTML>
<BODY>
<CENTER><H2>Application計數器<HR></H2>
進站人數 <%=Application("counter")%> 位
</BODY>
</HTML>

實例展示


  1. 那我們該如何防制連線者按下『重新整理』按鈕使計數器自動加一所產生的錯誤呢?我們可以利用具有『私用』特性的 Session 物件來判斷瀏覽連線者是否是新的連線者,我們可以利用下列判斷式先檢驗一下,如果是新的連線者,則其Session物件是沒有任何資料的!
    If IsEmpty (Session("Conn")) Then
    如果上列的判斷式是成立的(瀏覽連線者為新連線的,Session物件內沒有任何的資料),則我們就將Application 物件的紀錄資料加一,同時將瀏覽連線者的Session("Conn")資料值設為『True』,如此一來,當瀏覽連線者再次按下『重新整理』按鈕後,因為f IsEmpty (Session("Conn")) Then判斷式不成立(Session物件內已有連線紀錄的資料),則Application 物件的紀錄資料就不會再自動加一。使用 Application 物件與 Session 物件撰寫的計數器程式碼與執行結果,如下所列:
<%
If IsEmpty(Session("Conn")) Then
Application.Lock 
Application("counter") = Application("counter") + 1
Application.UnLock
End If 
Session("Conn") = True
%>

<HTML>
<BODY>
<CENTER><H2>Session計數器<HR></H2>
進站人數 <%=Application("counter")%> 位
</BODY>
</HTML>

實例展示

 

ASP 教學文件
WEB與ASP
ASP網頁概論
ASP內建元件與物件



 

本網頁內容由昱得資訊工作室楊宗誌(小誌 )製作(C) Copyright Valor-Studio since in 1993
非經正式書面同意,不得將全部或部分內容,以任何方式轉載於其他網站或用於任何商業行為