国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于Global.asa文件的深入研究與session變量失效提示的具體方法

2019-11-18 22:14:09
字體:
來源:轉載
供稿:網友
一:Global.asa文件的釋疑!從字面上講!Global就是全局的,全球的意思!
    我們都知道!瀏覽器中的變量存活期十分短暫!只有幾十秒!也就是一個頁面的下載時間。那么我們怎樣從生命開始
到結束都追蹤session級變量哪?靠asp文件已經力不從心了!微軟告訴我們:靠我們的Global.asa吧!
    global.asa是一個可選的文件!他必須放在你的www根目錄下,或是虛擬目錄的根目錄下。這樣,可以確保你的一個應
用程序共享一個global.asa文件。正是他可以在你的應用程序開始始終追蹤應用程序對象與會話對象。

二:Global.asa文件的組成與用法釋疑!
    為了讓服務器紀錄單獨用戶的線程。Global.asa文件必須指定
<SCRipT LANGUAGE=ScriptLanguage RUNAT=Server>
.......
</SCRIPT>
而runat=server這行文字告訴我們他確實是在服務器上執行的。(所以你不可能用msgbox()的函數,也不可能用
document.write的方法提示用戶或寫一些什么!后有詳述)
完整的用法是:
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>

Sub application_OnStart
. . .
End Sub

Sub Application_Onend
. . .
End Sub

Sub session_OnStart
. . .
End Sub

Sub session_Onend
. . .
End Sub

</SCRIPT>

而整個過程是這樣的。當你訪問一個站點文件。如果是html的,則程序不會運行!因為里面不可能有application,session
對象的發生。如果是asp文件,則服務器首先檢測www的根目錄,或虛擬目錄的根目錄有沒有global.asa文件。如有,則運
行程序內的相應代碼!但是請注意,如果你的asp文件中并沒有建立實例化的application,session。服務器同樣不追蹤
你!
  另外:值得注意的是:在Onstart事件發生時,服務器的任何對象都可以使用!
但是當onend事件發生時。則應注意session_Onend中只允許server,application,session對象運行。但實際上限制更多。
你不能在其中運行server.mapth方法。而且不可以再對session進行附值。

三:如何在session對象失效時提醒用戶---失效后
    終于開始討論有用的話題了!這也是許多網友關心的問題!
    首先,我們討論失效后如何提醒。
    這也要提醒嗎?直接檢測session("**")得值就可以嗎?(**為你要檢測其session("**")是否失效的值!)這樣并不
好,因為第一次上來的人也可能其session("**")為空!
    那么,我們來看看,該功能具體用在什么地方。最明顯的例子為購物網頁,如果你用session來存儲購物車。你必須告
訴他他的購物車是否失效(如果再購物期間用戶出去了,或是肚子不舒服了臨時干了什么!session的值可能失效!)
    有的想法是一失效就給出提示。可惜很難實現!因為session_onend事件在服務器端執行!不可能及時的傳過來告訴
你,除非用server push的方法。其實也不好!如果你不在,或是沒有了連接,他同樣無法完成。
    所以只有用戶再次登陸時告訴你你的上一次購物未完成,只有重新登陸!
    這下就好實現了。針對與單獨的客戶,如果他開始購物了那么他將觸發session_onstart事件的發生。這樣你在
global.asa中對其客戶端做標記!代碼如下:
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
.....
Sub session_OnStart
    response.cookies("flag")=1
End Sub
......
</script>
然后在你的檢測代碼中寫下檢測代碼
flag=request.cookies("flag")

if flag=1 and session(**)="" then
   response.write "你的上一次登陸已過期了"
   response.end
elseif session(**)="" then
   response.write "你還沒有登陸"
end if        
你可以將其寫成一個文件,然后用<--#include....-->包含進你需要檢測的文件中,這樣就可以完成對其檢測了!

那為什么不能在session_onend 事件中寫代碼,這樣不是更容易嗎?

可惜,我想了許多辦法也沒有想出。因為在session_onend事件中,你不可能用response.write,response.redirect。 對
象做些什么,他們不可訪問。只能用的幾個對象application,session,server還限制多多。你也不可能在此期間再給
session(**)附值,這樣他可能再也不會失效了,呵呵!

四:失效前給出提示。
    防患于未然是個很好的想法,但實現起來就不是真的很有用。我們上面討論過。這必須是用戶連接著。而且好像還沒
有session快失效的事件,呵呵!
    那么真的沒有沒有辦法了嗎?其實有,我們只要將上面的代碼多加幾行就可以了。
    首先。還是用global.asa文件中的session_onstart事件。
這里你要加上。
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
.....
Sub session_OnStart
    session.timeout=30       '這里指sission的失效時間,以分鐘為單位!
    response.cookies("flag")=1
    response.cookies("time")=now() '這里紀錄他的初次建立session的時間。
End Sub

......
</script>

看到這里,我們應該可以不難寫出檢測代碼。
將上面的代碼重新寫過,加一個時間運算如果它的失效還有5分鐘,就提示他。
應該不難!




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 晋城| 嘉定区| 托里县| 建宁县| 钟祥市| 卓资县| 凤凰县| 铁力市| 普洱| 都江堰市| 肇庆市| 姚安县| 霍城县| 新泰市| 乐亭县| 太原市| 临沭县| 托克逊县| 承德市| 沾化县| 铅山县| 宁津县| 宿迁市| 延庆县| 陆丰市| 盱眙县| 天祝| 石楼县| 隆子县| 敦化市| 综艺| 五指山市| 宁武县| 西盟| 庄浪县| 长宁县| 北宁市| 隆德县| 乌拉特中旗| 楚雄市| 侯马市|