国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

如何解決ASP中session失效問題

2013-04-29 00:44:03丁浩
電腦知識與技術(shù) 2013年7期
關(guān)鍵詞:對象

丁浩

摘要:ASP作為一種服務(wù)器端腳本的編寫環(huán)境,可以用來創(chuàng)建和運行動態(tài)網(wǎng)頁或Web應(yīng)用程序,它所提供的一些內(nèi)置對象使得服務(wù)器端腳本功能更強。session是ASP的一個重要對象,可以用來在頁面間傳遞參數(shù)。然而,session失效導(dǎo)致參數(shù)傳遞失敗這一問題,在Web應(yīng)用程序開發(fā)中普遍存在,使萬千開發(fā)者頭痛。該文介紹了如何將session對象與cookie對象聯(lián)合使用以解決session失效的方法。

關(guān)鍵詞:ASP;session失效;cookie;對象

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2013)07-1527-02

ession是ASP中的一個重要對象,用于存儲特定的用戶會話所需的信息。session中文是“會話”的意思,在ASP中代表了服務(wù)器與客戶端之間的“會話”。 session的作用時間從用戶到達某個特定的Web頁開始,到該用戶離開Web站點,或在程序中利用代碼終止某個session結(jié)束。引用session則可以讓一個用戶訪問多個頁面之間的切換也會保留該用戶的信息。系統(tǒng)為每個訪問者都設(shè)立一個獨立的session對象,用以存儲session變量,并且各個訪問者的session對象互不干擾。

在《網(wǎng)頁制作》教學中,我設(shè)計了這樣一個任務(wù):設(shè)計一個會員登錄模塊,會員分為一、二、三個級別,登錄后,不同級別的會員在購買商品時可享受不同的折扣。在實現(xiàn)模塊功能時,就用到了session對象。然而,當某個會員登錄并成功購買了一個商品后,當“再購買”行為發(fā)生時,系統(tǒng)卻不能正確給出折扣。為什么?仔細分析模塊中的兩個頁面,即登錄頁面login.asp和購買頁面buy.asp的關(guān)系:登錄頁面將會員的“級別”等信息保存在session中,購買頁面則從session中獲得會員“級別”等信息,進而在價格上給予對應(yīng)折扣。“再購買”不能識別會員級別,顯然是因為session失效了。如何解決這個問題?

我嘗試了下面幾種辦法。

1 修改timeout屬性值

ession對象的timeout屬性用來設(shè)置session會話的超時時間,以分鐘表示,默認值為20分鐘。當timeout屬性設(shè)置的時間值耗盡后,會話資源將被釋放。通過timeout屬性破壞session對象,避免了session對象在服務(wù)器中無限制地產(chǎn)生,保護了服務(wù)器資源。但是,在實際Web應(yīng)用程序開發(fā)中,常常遇到如上述會員“再購買”中出現(xiàn)的session失效現(xiàn)象,導(dǎo)致用戶狀態(tài)信息丟失而致使應(yīng)用流程無法正常完成的問題。因此,在登錄頁面中,我加入了下面的代碼:

timeout=1000

然而,同一用戶依然不能在“再購買”中獲得該享有的折扣,也就是session失效問題并沒有解決。分析得出結(jié)論:在會員購買完第一個商品后,由于“確認”購買操作,導(dǎo)致了session對象會話結(jié)束。除非我重新編寫購買程序,否則,即便將timeout屬性值設(shè)置的再大些,還是不能解決問題。于是,我又采用了下面的方法,試圖解決這個棘手的問題。

2 利用application對象

application也是asp的一個對象,也可以傳遞參數(shù)。于是,我將session對象換成了application,也就是用application來保存會員的“級別”等信息。同一個會員的“再購買”功能實現(xiàn)了,但是又帶來一個更糟糕的問題:所有的會員無論是什么級別的,都享有同第一個進入系統(tǒng)的會員一樣的折扣了。通過分析,我發(fā)現(xiàn),自己犯了一個低級錯誤,就是忽略了application與session的不同。

1) 從應(yīng)用范圍看:application參數(shù)的作用域是相對于整個應(yīng)用程序的,也就是整個網(wǎng)站的,session參數(shù)作用域僅對單個用戶有效或單次會話有效。

2) 從生命周期看:session是在站點的頁面從打開到被關(guān)閉之前一直生存的,關(guān)閉或跳轉(zhuǎn)到其它網(wǎng)站就會使session死掉,而application是從站點發(fā)布以來一直存活的,除非重啟了站點服務(wù)。

顯然,用application代替session是多么愚蠢的做法??!

3 利用cookie對象

cookie對象是用來存儲有關(guān)當前用戶數(shù)據(jù)的小信息包,它可以在瀏覽器(客戶端)和web服務(wù)器之間傳遞。在web應(yīng)用中,cookie提供了一種用于跟蹤、記錄每個用戶位置的機制。通常,cookie對象在客戶端windows系統(tǒng)目錄下cookies子目錄中以文件形式存儲。存儲在cookie對象中的信息數(shù)據(jù)能夠被保存較長時間,所以,可以將會話級變量備份在cookie對象中,在session對象失效后,通過檢索并利用cookie對象中的信息來自動恢復(fù)斷點。

這個方法終于成功地解決了session失效問題。具有代碼如下:

其中的MemberName用于存儲會員名,MemberJb用于存儲會員級別,在用戶登錄前初始會話級變量的代碼如下:

在會員登錄時,設(shè)置會話級變量并備份到客戶端cookie對象中。代碼如下:

在會員購買商品時,讀取會話級變量,如果該變量已經(jīng)失效,則通過讀取cookie對象,恢復(fù)該會話級變量的屬性。代碼如下:

當會員退出時,清除會話級對象和cookie對象。

4 結(jié)束語

ession對象與cookie對象在客戶端聯(lián)合存取會話級變量的方法簡單實用,并且能夠有效地避免用戶強行登錄等問題,不失為一種較好地解決session對象失效的方法。

猜你喜歡
對象
神秘來電
睿士(2023年2期)2023-03-02 02:01:09
涉稅刑事訴訟中的舉證責任——以納稅人舉證責任為考察對象
攻略對象的心思好難猜
意林(2018年3期)2018-03-02 15:17:24
基于熵的快速掃描法的FNEA初始對象的生成方法
區(qū)間對象族的可鎮(zhèn)定性分析
三角范疇中的(n,m)-強ξ-Gorenstein投射對象
九江县| 天台县| 曲水县| 民乐县| 安图县| 永济市| 谢通门县| 八宿县| 河南省| 东阳市| 新营市| 昌乐县| 乌拉特后旗| 高陵县| 常宁市| 德令哈市| 兰坪| 瑞安市| 英山县| 子洲县| 蒙自县| 堆龙德庆县| 兴化市| 涟水县| 德惠市| 陆良县| 三台县| 屯昌县| 新泰市| 曲阳县| 绿春县| 衡东县| 宿松县| 滨州市| 康乐县| 双牌县| 依安县| 庆阳市| 锡林郭勒盟| 邹城市| 华蓥市|