濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > ASP編程入門進(jìn)階(八):內(nèi)置對(duì)象Session

ASP編程入門進(jìn)階(八):內(nèi)置對(duì)象Session

熱門標(biāo)簽:虛擬電話外呼系統(tǒng) 鄭州智能外呼電銷機(jī)器人廠家 沈陽(yáng)三五防封電銷卡 成都ai外呼系統(tǒng)線路 長(zhǎng)春公司外呼系統(tǒng)中心 云南便宜外呼系統(tǒng)平臺(tái) 沈陽(yáng)電話機(jī)器人公司 廣東語(yǔ)音外呼系統(tǒng)公司 鄢陵學(xué)校如何做地圖標(biāo)注
ASP對(duì)象中除了用于發(fā)送(Response)、接收和處理數(shù)據(jù)(requeest)、服務(wù)器訪問(wèn)(Server)的對(duì)象外,還有一些非常實(shí)用的標(biāo)記Active Server應(yīng)用程序(Application)和單個(gè)用戶信息(Session)的對(duì)象。

Session對(duì)象
該對(duì)象在ASP使用中占相當(dāng)大的比例。由于網(wǎng)頁(yè)是一種無(wú)狀態(tài)程序,無(wú)法得知用戶瀏覽狀態(tài)。在ASP中,通過(guò)Session對(duì)象來(lái)記錄使用者私有的數(shù)據(jù)變量,以作為用戶再次對(duì)服務(wù)器提出要求時(shí)做確認(rèn),用戶在程序的Web頁(yè)面之間跳轉(zhuǎn)時(shí),存在Session對(duì)象中的變量將不會(huì)消失。

這些真的是很重要的功能,尤其是有會(huì)員的系統(tǒng)必須要用到的。像是會(huì)員的登入賬號(hào)、時(shí)間、狀態(tài)以及許許多多該記錄的實(shí)時(shí)數(shù)據(jù)(如購(gòu)物系統(tǒng)記錄使用者的購(gòu)物籃內(nèi)的商品),這些信息屬于各使用者私人所需要,通常開(kāi)發(fā)者都是使用 Session 記錄處理。

在ASP中的Session是使用Cookies構(gòu)成,服務(wù)器將所有的Session內(nèi)記錄的數(shù)據(jù),以Cookies的方式傳至用戶的瀏覽器。通常一般瀏覽器會(huì)將這些Cookies存起來(lái),每當(dāng)使用者點(diǎn)選連結(jié),再次與服務(wù)器做聯(lián)機(jī)時(shí),瀏覽器就會(huì)把這些Cookies傳回Server供做處理:這即是Session的運(yùn)作原理。由此可知會(huì)話狀態(tài)Session僅在支持cookie的瀏覽器中保留,如果客戶關(guān)閉了Cookie 選項(xiàng)Session也就不能發(fā)揮作用了。

一、Session.SessionID
SessionID 屬性返回用戶的會(huì)話標(biāo)識(shí)。在創(chuàng)建會(huì)話時(shí),服務(wù)器會(huì)為每一個(gè)會(huì)話生成一個(gè)單獨(dú)的標(biāo)識(shí),會(huì)話標(biāo)識(shí)以長(zhǎng)整形數(shù)據(jù)類型返回。在很多情況下 SessionID 可以用于 WEB 頁(yè)面注冊(cè)統(tǒng)計(jì)。

利用該屬性可以解決一種對(duì)用戶的控制問(wèn)題。該問(wèn)題的主要功能就是,針對(duì)某個(gè)網(wǎng)站的一個(gè)模塊,當(dāng)一個(gè)會(huì)員登錄后正在看此模塊時(shí),另一個(gè)人用同樣的會(huì)員名登錄,就不能瀏覽這個(gè)模塊:也就是說(shuō)一個(gè)會(huì)員名同時(shí)只能一個(gè)人瀏覽此模塊。

通過(guò)用會(huì)員名(假設(shè)為UserID,唯一)和SessionID來(lái)實(shí)現(xiàn)了控制。當(dāng)會(huì)員登錄時(shí),給這個(gè)會(huì)員一個(gè)Session記錄登錄狀態(tài)如:Session("Status")="Logged",同時(shí)把這個(gè)會(huì)員的Session.SessionID寫入數(shù)據(jù)庫(kù)。當(dāng)他要瀏覽此模塊時(shí),先判斷其是否登錄,若已經(jīng)登錄再判斷它的SessionID是否與數(shù)據(jù)庫(kù)記錄的相同,如果不同則不能訪問(wèn)。

這樣,當(dāng)另一個(gè)用戶用相同的會(huì)員名登錄時(shí),那么數(shù)據(jù)庫(kù)中記錄的就是新的SessionID,前者訪問(wèn)此模塊時(shí)就不能通過(guò)檢查。這就實(shí)現(xiàn)了一個(gè)會(huì)員名同時(shí)只能一個(gè)人瀏覽某個(gè)模塊。這個(gè)功能在一些收費(fèi)網(wǎng)站有很有特別作用,它防止了一個(gè)會(huì)員名給多個(gè)人瀏覽的問(wèn)題,為公司保障了利益。


%=Session.SessionId%>
是單獨(dú)生成的唯一ID標(biāo)識(shí),可刷新調(diào)試。


二、Session.TimeOut
該屬性設(shè)置的Session的最大間隔時(shí)間。間隔時(shí)間是指客戶器端從最近一次向Web服務(wù)器提出要求,到下一次向Web服務(wù)器提出要求的時(shí)間??梢岳斫鉃椋喝绻脩粼谠摮瑫r(shí)時(shí)限之內(nèi)不刷新或請(qǐng)求網(wǎng)頁(yè),則該會(huì)話將終止。Timeout 屬性是以分鐘為單位,為該應(yīng)用程序的Session對(duì)象指定超時(shí)時(shí)限的,一般默認(rèn)為20分鐘。這在網(wǎng)吧等公共場(chǎng)所,登錄個(gè)人信息頁(yè)而忘記關(guān)閉窗口時(shí),顯得比較重要(至少可以把時(shí)間設(shè)短些)。


%Session.TimeOut=10%>


以上SessionId、TimeOut屬于Session對(duì)象的兩個(gè)屬性,下面看該對(duì)象的一個(gè)方法Abandon

三、Session.Abandon
該方法是Session對(duì)象的唯一方法,可以清除Session對(duì)象,用來(lái)消除用戶的Session對(duì)象并釋放其所占的資源。當(dāng)然你如果沒(méi)有明確調(diào)用Abandon方法,一旦會(huì)話超時(shí),服務(wù)器也會(huì)將刪除這些對(duì)象并釋放資源。
下面就用兩個(gè)頁(yè)的程序來(lái)認(rèn)識(shí)Session對(duì)象以及Abandon方法的利用。

1,login.asp


%
'是提取url中變量loginout的值是否為true,若為真,就執(zhí)行Session.Abandon()。
if Request.QueryString("loginout")="true" then
Session.Abandon()
end if

'只有在當(dāng)點(diǎn)擊了submit按鈕的前提下,再來(lái)判斷提取的東西都不為空,則建立Session對(duì)象。
submitname=request.form("submit1")
if submitname="submit" then
if Request.Form("name")>"" and Request.Form("pwd")>"" then
Session("name")=Request.Form("name")
Session("pw")=Request.Form("pwd")
end if
end if
%>
%
'如果Session("name")不為空,則顯示Session("name")的值,并且做一個(gè)到info.asp的鏈接。
if Session("name")>"" then
response.write("你的name值是:"Session("name"))
response.write("br>a href='info.asp'>顯示你的資料/a>")
else

'否則,即Session("name")為空不存在,則顯示表單用以輸入建立Session的平臺(tái)。
%>
form action="login.asp" method="post">
姓名:input type="text" name="name">br>
密碼:input type="password" name="pwd">br>
input type="submit" value="submit" name="submit1">
/form>
!--同樣做了一個(gè)到info.asp的鏈接。-->
a href="info.asp">顯示你的資料/a>
%end if%>



注意Session("name")為空和不為空的時(shí)候,都做了一個(gè)到info.asp的鏈接,具體調(diào)試結(jié)果如何,再來(lái)看info.asp的內(nèi)容。

2,info.asp


%
'如果session對(duì)象值為空則跳轉(zhuǎn)到login.asp
if session("name")="" then
    Response.Redirect("login.asp")
'否則就顯示個(gè)人信息
else
    Response.Write("你的姓名:"session("name")"br>")
    Response.Write("你的密碼:"session("pw")"br>")
end if
%>
a href="login.asp">返回/a>
a href="login.asp?loginout=true">退出/a>



可以看出來(lái),info.asp頁(yè)面內(nèi)容的顯示其實(shí)是需要條件的。那就是必須得有一個(gè)session值的存在,這樣才可以顯示具體的信息。這在登錄系統(tǒng)中運(yùn)用得比較多。

你可以把login.asp想象成一個(gè)登錄窗口,當(dāng)然我的這個(gè)比較簡(jiǎn)單(只要輸入用名和密碼就生產(chǎn)Session了),實(shí)際情況是:判斷輸入的用名和密碼是否和數(shù)據(jù)庫(kù)中的用名和密碼吻合,如果正確吻合才生成Session的。然info.asp頁(yè)面的作用剛好可以做為一權(quán)限頁(yè)面,因?yàn)檫M(jìn)入該頁(yè)需要Session,而Session的產(chǎn)生是確保用名密碼正確的。

所以當(dāng)一開(kāi)始出現(xiàn)表單窗口時(shí),你點(diǎn)login.asp鏈接是打不開(kāi)的,只有當(dāng)提交了表單生成了Session后才能進(jìn)入。這正是登錄系統(tǒng)的精髓所在,Do You Know?:)

四、Session_OnStart
Session_OnStart屬于Session對(duì)象的一類事件。它是在服務(wù)器創(chuàng)建新會(huì)話時(shí)發(fā)生的。服務(wù)器在執(zhí)行請(qǐng)求的頁(yè)之前先處理該腳本。Session_OnStart 事件是設(shè)置會(huì)話期變量的最佳時(shí)機(jī),因?yàn)樵谠L問(wèn)任何頁(yè)之前都會(huì)先設(shè)置它們。

對(duì)象的例程每一次啟動(dòng)時(shí)觸發(fā)Session_OnStart事件,然后運(yùn)行Session_Onstart事件的處理過(guò)程。也就是說(shuō),當(dāng)服務(wù)器接收到應(yīng)用程序中的URL的HTTP請(qǐng)求時(shí),觸發(fā)此事件,并建立一個(gè)Session對(duì)象。

當(dāng)然說(shuō)到Session_OnStart事件就不能不談到一個(gè)文件Global.asa(P.S:我打算把該文件和Chat程序放在一起說(shuō)的,所以現(xiàn)在先不作過(guò)多解釋)
具體用法先透露,寫在Global.asa文件內(nèi)部


SCRIPT RUNAT=Server Language=VBScript>
.......
Sub Session_OnStart
.......
End Sub
.......
/SCRIPT>



五、Session_OnEnd
一看也就知道是Session對(duì)象的另一類事件了。當(dāng)調(diào)用Session.Abandon方法時(shí)或者在TimeOut的時(shí)間內(nèi)沒(méi)有刷新,這會(huì)觸發(fā)Session_OnEnd事件,然后執(zhí)行里面的腳本。同樣具體用法在后面將寫的Global.asa文件專題中詳細(xì)介紹到,簡(jiǎn)單語(yǔ)法如下:


SCRIPT RUNAT=Server Language=VBScript>
.......
Sub Session_OnEnd
.......
End Sub
.......
/SCRIPT>



最后,不知道大家有沒(méi)有玩過(guò)這樣的一個(gè)程序:很令人討厭的,讓你永遠(yuǎn)關(guān)不掉的程序頁(yè)面。
只做程序調(diào)試,不要去作弄?jiǎng)e人。

以下文件保存為bug.html


[Ctrl+A 全部選擇進(jìn)行拷貝 提示:可先修改部分代碼,再點(diǎn)擊運(yùn)行]

發(fā)現(xiàn)該文件關(guān)不了了?(當(dāng)然你要關(guān)閉,把源代碼修改下)
那現(xiàn)在的要求是:計(jì)算關(guān)閉的次數(shù),如果超過(guò)多少次就可以自行關(guān)閉,那下面就采用到session

以下文件保存為bug.asp


%if session("num") 2 then%>
body onunload=javascript:window.open("bug.asp")>
%session("num")=session("num")+1%>
%else%>
script>
self.close()
/script>
%end if%>



呵呵,當(dāng)你關(guān)閉三次以后,窗口就再也不彈出了。了解吧:)
以上就是對(duì)Session對(duì)象的系統(tǒng)學(xué)習(xí)。

標(biāo)簽:馬鞍山 遼陽(yáng) 朝陽(yáng) 四平 湖北 平頂山 孝感 防城港

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP編程入門進(jìn)階(八):內(nèi)置對(duì)象Session》,本文關(guān)鍵詞  ASP,編程,入門,進(jìn)階,八,內(nèi)置,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP編程入門進(jìn)階(八):內(nèi)置對(duì)象Session》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于ASP編程入門進(jìn)階(八):內(nèi)置對(duì)象Session的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    壶关县| 灌南县| 明光市| 长子县| 文化| 明水县| 绍兴县| 湟源县| 博乐市| 天等县| 土默特右旗| 宁安市| 张家界市| 大洼县| 阳原县| 京山县| 雷波县| 乌审旗| 连城县| 新津县| 内江市| 阿合奇县| 英吉沙县| 岗巴县| 台前县| 巩义市| 平顺县| 丹东市| 稻城县| 邵阳市| 霸州市| 会泽县| 卢湾区| 孙吴县| 封开县| 扎鲁特旗| 福州市| 广汉市| 中方县| 揭阳市| 华宁县|