Board logo

標題: [教學] (ASP教學第11篇) Server資訊物件 [打印本頁]

作者: 小誌    時間: 2010-5-12 18:34     標題: (ASP教學第11篇) Server資訊物件

Server 物件允許使用者取得伺服器提供的各項功能,本單元將介紹 Request 物件的ServerVariables方法及Server物件。

Request.ServerVariables 方法:
利用此方法可取得伺服器提供的各項功能,其敘述如下:
  1. Request.ServerVariables("環境變數")
複製代碼
環境變數有很多,在此將只介紹較實用的,其他環境變數可參考 PWS/IIS提供之參考文件。

讀取IP位址的環境變數 "LOCAL_ADDR"
  1. serverID=request.servervariables("LOCAL_ADDR")
複製代碼
讀取Server端的IP位址 "REEMOTE_ADDR" 讀取Client端的IP位址
  1. clientID=request.servervariables("REMOTE_ADDR")
複製代碼
讀取附帶在網址後面的參數 "QUERY_STRING"
  1. element=request.servervariables("QUERY_STRING")
複製代碼
亦可以下列方法替代,其結果是相同的。
  1. element=request.querystring
複製代碼
假設所輸入的網址為
http://127.0.0.1/asp/ch01/elemenet.asp?name=kelvin&interest=play
則變數element="name=kelvin&interest=play" 我們可藉由split函數解析element變數,如下所示:
[attach]307[/attach]
  1. <%
  2. element=request.servervariables("QUERY_STRING")
  3. element=Split(element,"&")
  4. redim name(UBound(element))
  5. redim interest(UBound(element))
  6. for i=0 to UBound(element)
  7.    z=Split(element(i),"=")
  8.    name(i)=z(0)
  9.    interest(i)=z(1)
  10. next
  11. %>
複製代碼
Server 物件:
  Server.MapPath方法:將網址路徑轉為真實的檔案路徑 因為ASP規定必須指定檔案的真實路徑,用法如下:
  1. 真實的路徑=Server.MapPath("虛擬路徑")
複製代碼
什麼叫做『虛擬路徑』?虛擬路徑其實就是『網址』,當我們連結至某個網站的根目錄時,我們就會在瀏覽器的網址輸入欄位中輸入網站的網址,例如:http://www.twbts.com/,這就表示我們要鍊結至該網站的根目錄,但是實際對應到該網站伺服器上硬碟根目錄卻是『\Inetpub\wwwroot』,所以,說穿了『網址』就是『假』的網站伺服器目錄,只不過『假』很不好聽,因此我們就稱之為『虛擬』!

如果我們所安裝的 PWS/IIS 網路伺服器模擬機制的 www 根目錄(網址虛擬根目錄)為『c:\Inetpub\wwwroot』,我們若使用Server.MapPath("/")呼叫敘述,則回傳的資料值將是『c:\Inetpub\wwwroot』;我們若使用Server.MapPath("/test")呼叫敘述,則回傳的資料值將是『c:\Inetpub\wwwroot\test』。

為何需轉換『虛擬路徑』為真實的路徑呢?因為當我們需要開啟檔案或是資料庫時,ASP 強硬的規定我們必須指定欲開啟檔案(或資料庫)的『實際路徑』之故!

  對特殊字元進行編碼 "HTMLEncode"  
如果我們要在網頁中單純的顯示『<b>粗體</b>』這些單純的文字時,該如何編寫我們的ASP網頁呢?如果我們撰寫的敘述如下圖a所編寫的內容一般,則以瀏覽器瀏覽網頁時將會獲得如圖b的錯誤答案:
[attach]308[/attach]


怎麼會這樣呢?因為<b>與</b>輸出至瀏覽器後都會被解譯為 HTML 網頁標籤了!那怎麼辦啊!這個時候我們就必須利用 Server.HTMLEncode 來進行字元編碼,其標準格式為:
  1. Server.HTMLEncode ("要進行編碼的資料")
複製代碼
以剛剛要被單純輸出的資料為例:Server.HTMLEncode ("<b>粗體</b>"),經過編碼之後所得的答案將是『&lt;b&gt;粗體&lt;/b&gt;』,如此一來,當瀏覽器對網頁內容進行解譯時,這些經過編碼過的資料瀏覽器就只會將它們解碼回原來的特殊字元而不會解譯為 HTML 網頁標籤了!
[attach]309[/attach]
執行結果如下圖所示:
[attach]310[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)