[摘 要] 闡述了Session對象的作用及應用方法,指出了Session對象的特點,并在此基礎上給出了Session對象的幾個應用實例。最后對Session對象的局限性作出了分析。
[關鍵詞] ASP對象 ASP程序設計 Session對象
ASP是目前廣泛使用的動態網頁制作技術,很多電子商務網站都使用ASP技術進行開發。在電子商務網站開發和運行中,防止非法用戶登錄,保存登錄用戶信息和用戶購物信息,在網站的各頁間共享信息,是網站必須具備的功能。這些功能可以通過ASP的Session對象和Session數組實現。
本文結合實例,介紹利用Session對象在網站開發中保存、傳遞登錄用戶信息以及利用Session數組同時保存、傳遞多個信息的方法。
一、Session對象
1.Session對象的作用
Session對象是ASP的內置對象之一,負責記載單個用戶的信息。不同用戶的信息用不同的Session對象記載。Session對象最大的特點是,Session一旦被創建,網站中各頁都可以讀取它。Session對象又稱為會話級對象,當一個用戶訪問網站時,即啟動了一個Session對象,即使該用戶在網站的各頁間跳轉時,該Session信息一直存在,網站的任何一個頁面都可以讀取它,直至該用戶離開網站。
Session對象有有效期,一般為20分鐘。當用戶離開網站或在Session有效期內不再點擊網站的任何內容時,該Session對象會自動被刪除。
2. Session對象的創建與讀取
可以把登錄用戶的用戶名、密碼等信息存儲在Session中。創建Session的語句為:Session(\"Session名字\")=變量或字符串信息。讀取Sessi on信息的語句為:變量名=Session(\"Session名字\")。
Session數組的創建和讀取與簡單變量基本上是一樣的,不同的是一般的Session變量只能存儲一個數據,而Session數組能夠存儲多個數據。Session數組當成一個整體看待,只能把一個數組整體存入或取出。
二、Session對象應用實例
1.利用Session對象防止非法用戶訪問并在網站內各頁間傳遞、保持用戶信息
在互聯網的搜索引擎中,輸入查詢關鍵詞,便會找到包含該關鍵詞的若干網頁,點擊即可進入,這對網站的安全構成了威脅。網站可以利用Session對象,控制用戶必須先登錄,登錄成功后才能訪問其他網頁。控制的方法是在其他網頁的開頭加上一段程序:
<%
If Session(\"User_Name\")= \"\"then '若Session(\"User_Name\")為空,則表示用戶沒有登錄過
Response.Redirect \"Login.asp\" '直接轉入登錄頁(Login.asp)
End
%>
如果用戶在登錄頁登錄了,則用<% Session(\"User_Name\")=\"用戶名\" %>語句創建名為“User_Name”的Session,將用戶名存入。登錄頁Login.asp主要代碼如下:
'用戶要填寫的登錄表單,略
<%
If Request.Form(\"User_Name\")<>\"\" Then '若用戶填寫了用戶名,則
Session(\"User_Name\")=Request.Form(\"User_Name\") '將用戶名存入名為User_Name的Session變量中
End If
%>
存儲用戶名的Session建立后,用戶再訪問其他頁時,其他頁都可以通過讀取Session(\"User_Name\")的值獲得該用戶信息。
2.利用Session數組在頁間傳遞、保持用戶購物信息
可以利用Session對象具有的“一旦創建,各頁共享”的特點,以及Session數組可以一次傳遞多個變量的特點,為網站制作一個簡易購物車。將用戶在瀏覽商品頁選擇的商品名稱及數量,傳遞到“查看購物籃”頁。以下給出制作簡易購物車實例。
(1)供用戶瀏覽、選擇商品的頁面程序SelectProduct1.asp部分代碼如下:
<%
dim ar1(2) '聲明一個數組ar1
dim ar2(2)
……
If Request(\"b1\").Count > 0 Then '若表單項b1不空,則用戶選擇了該產品
ar1(0)=Request(\"b1\") '將獲取的商品名稱存入ar1數組的第一個元素中
ar1(1)=Request(\"n1\") '將獲取的商品數量存入ar1數組的第二個元素中
Session(\"array_s1\") = ar1 '將數組ar1存入名為array_s1的Session數組中
Session(\"bz1\")=1 '將1存入名為bz1的Session中,做標記用,表示數組不空
End If
……'其他商品依次類推
%>
請選擇商品,每件100元:
<Form Method=\"Post\" Action=\" SelectProduct1.asp\">
<P><Input Type=\"CheckBox\" Name=\"b1\" Value=\"籃球\">籃球
購買數量<Input Type=\"input\" Name=\"n1\" Value=\"1\">'n1為接受數量的文本框,默認值為1
<!——其他商品依次類推——>
<P><Input Type=\"Submit\" Value=\"提交\" Name=\"x1\">
<A Href=\"SelectProduct2.asp\">購買其他商品</A>
<A Href=\"Display.asp\">查看購物車</A></P>
</Form>
本頁中,若用戶選擇了一個商品,則通過Request對象分別獲取商品名稱和購買數量,存入數組,再將該數組整體存入Session中,以便在“查看購物車”頁中將所選商品名稱和購買數量讀出來。
(2)其它商品頁程序同SelectProduct1.asp。
(3)“查看購物車”頁程序Display.asp如下:
<%
If Session(\"bz1\")=1 Then
ar1=Session(\"array_s1\") '將Session數組array_s1整體取出,寫入名為ar1的數組變量中
Response.Write ar1(0)+\"nbsp\"+ar1(1)+\"<Br>\" '將數組中各元素輸出,即顯示商品名稱和購買數量
End If
…… '其他商品依次類推
%>
三、Session對象與隱藏域的綜合應用
隱藏域是表單中類型為Hidden的文本框,該文本框在頁面上不可見。表單提交時,隱藏域的值一并被提交。利用的這個特點,可以將登錄者的用戶名,即Session(\"User_Name\")的值,作為隱藏域的值,在用戶提交購物表單時一并提交。隱藏域定義與賦值關鍵代碼如下:
<Input Type=\"Hidden\" Name=\"user_name\" Value=\"<%= Session(\"User_Name\")%>\"
四、使用Session對象時應注意的問題
Session對象雖然功能非常強大,但也有一定的局限性,使用時應充分注意。
Session的使用要借助于客戶端。若某客戶端機器出現問題,則網站對該用戶的記載中斷。同時,服務器與客戶端的每次連接時要占用網絡資源,傳遞的數據量較多時將影響網速。
五、總結
Session對象在網站開發中起著非常重要的作用。利用Session對象和Session數組,在網站各頁間可以一次傳遞單個或多個數據。Session對象占用大量的網站資源,應注意使用后盡快刪除。合理地使用Session,將有助于提高網站開發的效率。
參考文獻:
[1]菜翠平 尚俊杰:網絡程序設計ASP(第2版)[M].北京:清華大學出版社,北方交通大學出版社,2004年2月P73
[2]石志國 王志良 薛為民:ASP精解案例教程[M].北京:清華大學出版社,北方交通大學出版社,2004年1月P118
[3]唐 晏:ASP.net頁面之間數據傳遞的實現[J].計算機應用研究,2006 Vol.23 No.5 P.228