編程|進階 4.2.3 伺服器端包含指令的例子
本節提供了一些樣本頁面,可以用來對各種伺服器端包含語句進行實驗。開啟樣本網頁的子目錄Chapter04,顯示“SSI Directives and the ASP Server Object”首頁(即子目錄Chapter04中的Default.asp),如圖4-3所示:
圖4-3 樣本網頁
本書的所有樣本都可以從我們的Web網站下載。讀者將在樣本的子目錄Chapter04中發現本章其餘部分的所有樣本頁面。
1. 使用SSI/CGI處理指示
單擊連結進入“Server-Side Include and CGI Statements”頁面,這將開啟ssi_cgi.stm頁面。需要注意的是該頁面的副檔名為.stm,表明這不是一個ASP網頁。該頁面使用了前面已經討論過的除#exec指令(稍後將看到)以外的所有SSI指令,且顯示指令的使用方法和結果,如圖4-4所示:
圖4-4 樣本網頁顯示的SSI/CGI處理指示情況
(1)#include指令
該頁的開始部分“Include Files with SSI”,顯示名為intro.inc的另一個單獨檔案的內容。下面是該檔案的全部內容:
注意我們必須使用HTML條目“<”和“>”來顯示網頁中的角括弧。如果不這樣做,它們就不能被當作註解元素部分看待,並引起其中的指令被執行。
在主ssi_cgi.stm頁面中,把這個檔案插入到該頁中的代碼是很簡單的:
<!-- #include file=”intro.inc” -->
(2)#config、#fsize和#flastmod指令
網頁下一部分顯示了與該頁面在相同的目錄中的檔案Default.asp的大小和最後被修改的時間。這裡三次使用了#config指令:
· 一次是設定SSI錯誤資訊。
· 一次是設定日期和時間的格式。
· 一次是設定檔案大小計算的格式。
使用#fsize和#fiastmod指令把值插入到該網頁中:
<P><DIV CLASS="subhead">SSI Statements</DIV>
<!-- #config ERRMSG="SSI Processing Error" -->
(sets error message in case of SSI error)<BR>
<!-- #config ERRMSG="SSI Processing Error" --><P>
Details of file 'Default.asp':<BR>
<!-- #config SIZEFMT="BYTES" -->
(sets fsize to return size in bytes)<BR>
<!-- #config SIZEFMT="BYTES" -->
<!-- #fsize FILE="Default.asp" -->
returns: <B><!-- #fsize FILE="Default.asp" --> bytes</B><BR>
<!-- #config TIMEFMT="%A, %B %d %Y %H:%M:%S" -->
(sets format for date/time results)<BR>
<!-- #config TIMEFMT="%A, %B %d %Y %H:%M:%S" -->
<!-- #flastmod FILE="Default.asp" -->
returns: <B><!-- #flastmod file="Default.asp" --></B><P>
(3)#echo 指令
該頁的最後部分(在螢幕上只能看到一部分)顯示可以使用#echo指令訪問的所有HTTP前序的內容。每一行的代碼都是相同的,僅僅是VAR屬性值有變化。附錄G中給出了VAR屬性的所有容許值的一個完整列表。
<DIV CLASS="subhead">HTTP Variables</DIV>
<!-- #echo VAR="AUTH_TYPE" -->
returns: <B><!-- #echo var="AUTH_TYPE" --></B><BR>
<!-- #echo VAR="AUTH_PASSWORD" -->
returns: <B><!-- #echo var="AUTH_PASSWORD" --></B><BR>
… etc …
2. 使用#exec指令
#exec指令與其他的SSI指令相比使用起來困難一些,正因為如此,將其獨立地放到了另一個頁面上。可以從“ASP Server Object and SSI Directives”主菜單上訪問啟動頁面。
在該頁面上,選擇“Using the #echo Server-Side Include Directive”連結。這個操作開啟“The SSI #exec Directive”頁面,如圖4-5所示:
圖4-5 “The SSI #exec Directive”網頁
這是一個ASP網頁ssi_exec.asp。兩個按鈕用來開啟.stm頁面,該頁面執行其中使用#exec指令所描述的動作。
(1) 在伺服器上運行這個樣本
在SSI #exec指令樣本能夠在伺服器上工作之前,必須對一些配置進行修改。首先,需要在Web伺服器的註冊表中建立SSIEnableCmdDirective項(類型DWORD),位置在下面的鍵名下:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters
然後設定該值為1,如圖4-6所示:
圖4-6 註冊表中的設定
這樣就允許#exec指令與CMD屬性一起使用。
其次,必須對包含使用#exec指令的.stm檔案的目錄禁止匿名訪問,用戶端將被強制提供帳號的詳細情況,該帳號應是一個具有管理員級許可權帳號。這也是net命令正常工作的要求。
啟用Internet Services Manager應用程式,並選擇包含使用#exec指令的.stm檔案的目錄(在樣本中,這些檔案是exec目錄下的start_cisvc.stm和stop_cisvc.stm)。然後開啟該目錄的Properties對話方塊。在Directory Security選項卡中單擊Anonymous access and authentication control地區中的Edit按鈕,開啟 Authentication Methods對話方塊,如圖4-7所示:
圖4-7 設定驗證方法的對話方塊
這個對話方塊不選中Anonymous access複選框。如果不使用Internet Explorer訪問該頁面,開啟Basic authentication選項以允許非IE瀏覽器通過提交使用者名稱/口令訪問該頁面。設定時,會出現一個有關安全的警告,單擊Yes。現在瀏覽器將被強制出示合適的帳號和身份證明,因為不能匿名訪問該網頁。
為了能看到啟動和終止服務的結果,開啟“Services MMC外掛程式”,終止Indexing Service,如圖4-8所示:
圖4-8 啟動和終止服務的螢幕
(2) 啟動和終止Indexing Service
單擊樣本Web網頁上的按鈕,啟動Microsoft Indexing Service。
這個服務的簡短名稱為cisvc,它通常稱為Microsoft Index Se
[1] [2] 下一頁