六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

ASP實用大全-ASP對象(6)

[摘要]深入研究Application和Session對象(2)   在本例中,用application("online")變量記錄已經登錄社區的在線人數,因為一旦有用戶訪問服務器而不管用戶是否登錄,都會產生OnStart事件,所以不能在OnStart事件里使Applicaito...

深入研究Application和Session對象(2)

      在本例中,用application("online")變量記錄已經登錄社區的在線人數,因為一旦有用戶訪問服務器而不管用戶是否登錄,都會產生OnStart事件,所以不能在OnStart事件里使Applicaiton("online")加一。因為不管是否是登錄用戶的會話結束都會產生OnEnd事件(假如有訪客訪問了服務器但并不登錄社區,他的會話結束后也會產生OnEnd事件),所以在Session_OnEnd事件里用了句if語句來判斷是否為已登錄用戶的OnEnd事件,如果是才將在線人數減一。

  這只是一個統計在線人數的簡單例子,對于一個完整的虛擬社區來說,僅僅統計有多少人在線是不夠的,在本例中數據庫里有個online字段是用來記錄用戶的在線狀態,用戶登錄的時候,在login.asp里將online設為1,但用戶離線時并沒有將online設為0,要完善它,就要修改一下Session_OnEnd事件,在該事件里將online設為0。

  ===global.sas===

  <script LANGUAGE="VBScript" RUNAT="Server">

  Sub Application_OnStart

   application("online")=0

   set application("conn")=Server.CreateObject("ADODB.Connection")

   application("db")=Server.MapPath("\bbs.mdb") '此處最好使用絕對路徑\bbs.mdb,下文有詳細介紹

  
End Sub

  sub Application_OnEnd

   set application("conn")=nothing

  End Sub

   Sub Session_OnStart

  End Sub

  Sub Session_OnEnd

   if session.contents("pass") then '判斷是否為登錄用戶的Session_OnEnd

     application("con").open ="driver={Microsoft Access Driver (*.mdb)};dbq="&application("db")

      application.lock

      application("online")=application("online")-1

      application("con").Execute ("update friends set online=0 where id="&session.contents("id"))

      application.unlock

      application("con").close

   end if

  End Sub

  </script>

  ==============

  至此,完整的代碼已經完成了。因為在Application和Session的OnEnd事件里不能使用Server對象,所以要將數據庫的連接及數據庫在服務器上的物理地址(d:\inetpub\wwwroot\bbs.mdb)存儲在application變量中,并在Application_OnStart事件中預先處理。同理,在Session_OnEnd事件中不能用session("pass")來代替session.contents("pass")(以下有詳盡說明)。

  四、本文實例中值得引起注意的兩點

  ⒈OnEnd事件里的session.contents

  剛開始接觸global.asa的朋友經常會將上面Session_OnEnd事件里的

  if session.contents("pass") then 寫成

  if session("pass") then,

  這樣的話系統不會提示錯誤,但是永遠也不會執行then后面的內容,這是因為在OnEnd事件里禁止使用Session對象,但是可以用Session對象的集合來調用session變量。因為IIS并沒提示任何錯誤信息,所以筆者曾經在這上面浪費了很多時間。在此希望大家引以為鑒!

  ⒉Application_OnStart事件里用Server.MapPath獲取數據庫的物理地址時應使用絕對地址為了說明這個問題,大家可以做個實驗:將上面Application_OnStart事件里的

  application("db")=Server.MapPath("\bbs.mdb")改為:

  application("db")=Server.MapPath("bbs.mdb")

然后在d:\inetpub\wwwroot\目錄下建立一個test子目錄,寫一個temp.asp在test目錄里。

  ====test.asp====

  <%response.write application("db")%>

  ================

再將temp.asp拷貝一份放在根目錄下(d:\inetpub\wwwroot\)。用記事本打開global.asa,再打開兩個瀏覽器,瀏覽器A輸入地址http://localhost/temp.asp,按回車,將在瀏覽器上輸出:

  d:\inetpub\wwwroot\bbs.mdb

然后,在記事本的窗口上點"文件"菜單,選"保存"(使global.asa的修改時間改變,從而使IIS重啟動所有服務),再在瀏覽器B輸入地址http://localhost/test/temp.asp,按回車,在瀏覽器上輸出的是:

  d:\inetpub\wwwroot\test\bbs.mdb

global.asa文件雖然是放在站點根目錄下,但是如果在server.mappath中使用的是相對地址,而觸發Application_OnStart事件的用戶第一次訪問的頁面又不是屬于根目錄的話,得到數據庫的物理地址將不會是期望的結果,希望大家要特別小心。




主站蜘蛛池模板: 亚洲福利精品一区二区三区 | 亚洲伊人久久在 | 色综合天天综合给合国产 | 亚洲欧美日韩精品久久久 | 日韩国产在线观看 | 在线播放亚洲视频 | 亚洲天堂ww | 日韩尤物 | 亚洲国产精品成人综合色在线婷婷 | 伊人网站在线 | 四虎在线视频免费观看视频 | 中文字幕不卡免费视频 | 自拍视频网址 | 亚洲女人天堂 | 图片区 日韩 欧美 亚洲 | 青青在线精品2022国产 | 中文字幕日韩在线观看 | 亚洲人成片在线观看 | 日韩欧美亚洲一区 | 日韩欧美三级在线 | 亚洲欧美日本视频 | 色视频在线观看免费 | 午夜影院在线免费 | 特一级黄 | 亚洲第一黄色网 | 色呦呦在线免费观看 | 亚洲国产精品综合欧美 | 日本一区二区三区久久 | 人人澡人人爱 | 日韩三级在线观看视频 | 日本国产精品 | 亚洲性视频在线 | 欧美一卡二卡3卡4卡无卡免费 | 青青草国产精品久久久久 | 色天天躁夜夜躁天干天干 | 亚洲乱码中文字幕久久 | 日本一区免费看 | 一级毛片视频 | 四虎在线永久免费视频网站 | 欧美一级特黄aaaaaaa在线观看 | 伊人亚洲综合网成人 |