設為首頁收藏本站

 取回密碼
 註冊
搜尋
熱搜: Redump discuz
檢視: 276|回覆: 0

【轉貼】 include 的詳細用法

[複製連結]
發表於 2002年1月1日 12:17:40 | 顯示全部內容 |閱讀模式
包含檔案
利用伺服器端包含指令,可以在 Web 伺服器還沒處理檔案之前,把其他檔案的內容插入要傳給用戶端的檔案內。ASP 僅支援此種機制中的 #include 指令。請用以下語法將另一個檔案插入 .asp 檔案內:

<!-- #include virtual | file ="檔名" -->
以上語法中的 virtual 與 file 兩個關鍵字表示用來納入檔案的路徑種類,檔名則是要引入的檔案的路徑與檔案名稱。

包含檔案本身並不一定要用特殊的副檔名,但一般而言,將包含檔案的副檔名設定成 .inc,以便與其他種類的檔案區分,是比較好的程式設計風格。

使用 Virtual 關鍵字
Virtual 關鍵字的用途是設定虛擬目錄開頭的路徑。 舉例來說,假設虛擬目錄 /Myap 內有一個 Footer.inc 檔案,則在檔案中加上以下這行程式,便可將 Footer.inc 的內容納進來:

<!-- #include virtual ="/myapp/footer.inc" -->
使用 File 關鍵字
File 關鍵字的用途是設定相對路徑。 也就是從檔案本身目前所在目錄開始,到欲納入之檔案所在目錄的路徑。 舉例來說,如果您的檔案在 Myapp 這個目錄內,而 Header1.inc 位在 MyappHeaders 目錄內,則以下這行程式就可以將 Header1.inc 插入您的檔案內:

<!-- #include file ="headersheader1.inc" -->
請注意,指定包含檔案時所用的路徑 Headersheader1.inc,就是與您的檔案所在目錄的相對路徑;如果 #include 陳述式所在的程式不在 /Myapp 目錄內,則以上陳述式就沒有作用了。

使用 file 關鍵字時,如果您已經在 Internet Information Services 嵌入式管理單元 中選取了 [啟用上層路徑] 選項,還可以用 (..) 這種語法將上一層目錄或更高層目錄中的檔案納入進來。 若需相關指示,請參噫]定 ASP 應用程式。

包含檔案的位置
無論檔案位於哪一個路徑內,只要檔案的內容有變化,ASP 都能自動偵測到,並且在下一次瀏覽器要求含有此檔案的 .asp 檔案時,將檔案新的內容傳給瀏覽器。 但一般而言,若能將包含檔案集中放在同一個應用程式目錄或 Web 網站內,可以讓包含檔案比較安全些。 如果要做到更完善的保護,建議您將包含檔案放在應用程式中的單獨一個目錄內,例如 Includes,並對這個目錄只開放適當的「執行」(Web 伺服器) 權限。 若需其他,請參噫]定 Web 伺服器的權限。

重要 在預設情況下,Web 伺服器對所有檔案均具有「讀取」的權限。 但為了避免使用者看到您所納入的檔案內容,最好取消 Include 目錄的「讀取」權限。

包含檔案:使用技巧與注意事項
包含檔案本身也可以將其他檔案納入到自己本身。此外,.asp 檔案也可以重複納入同一個檔案一次以上,只要所有的 #include 指令不會造成迴圈的情形即可。例如 First.asp 檔案納入 Second.inc 這個檔案,則 Second.inc 就不可以納入 First.asp。也不可以把自己包含進來。ASP 會偵測這類的迴圈會巢狀錯誤,並於偵測到這種情形時產生錯誤訊息,同時停止處理所要求的 .asp 檔案。

ASP 是先將指定的包含檔案納入,然後才執行指令命令。因此您不可以用指令命令來組成要納入之檔案的名稱。舉例來說,在以下這個指令中,由於 ASP 會先執行 #include 指令,然後才將檔案名稱設定給變數 name,因此以下這個指令並不會開啟 Header1.inc 這個檔案。

<!-- 這個指令無效 -->
<% name=(header1 & ".inc&quothttps://www.fishman.idv.tw/phpforum/thread-859-1-1.html %>
<!-- #include file="<%= name %>" -->
指令命令與程序必須整個包含在 <% 與 %>、HTML 標記 <SCRIPT> 與 </SCRIPT>、或 HTML 標記 <OBJECT> 與 </OBJECT> 等成對的分隔符號內。換句話說,.asp 檔案中若含有分隔符號的左半部分,其相對應的右半部分不可以放在欲納入的包含檔案內,這樣是錯誤的。指令或指令命令必須完整,不可以分散在不同檔案內。例如以下指令就沒有作用:

<!-- 這個指令無效 -->
<%
For i = 1 To n
主檔案中的陳述式
<!-- #include file="header1.inc" -->
Next
%>
但以下這個指令就可以順利執行:

<%
For i = 1 to n
主檔案中的陳述式
%>
<!-- #include file="header1.inc" -->
<% Next %>
注意事項 如果您的 ASP 指令納入的檔案含有很多函數與變數,但這些函數與變數在您的 ASP 程式中都不會用到,則這些沒用到的結構所佔用的額外資源對伺服器的效能將有不利的影響,會降低 Web 應用程式的延展性。因此一般建議最好將包含檔案打散分成好幾個比較小的檔案,就不必在伺服器端指令內引入一個或兩個含有過多不需用到之資訊的大檔案,只要將必要的檔案納入即可。

有時候您可以用 HTML 的 <SCRIPT></SCRIPT> 標記將伺服器端的檔案納入進來。例如以下這個指令就用相對路徑的方式,納入一個可以讓伺服器執行的檔案:

<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="Utilsdatasrt.inc"></SCRIPT>
下表列出在虛擬路徑以及相對路徑兩種狀況下,用 SRC 屬性納入檔案的正確語法:

路徑類型 語法 範例
相對路徑 SRC="路徑檔名" SRC="UtilitiesTest.asp"
Virtual SRC="/路徑/檔名" SRC="/MyScripts/Digital.asp"
Virtual SRC="路徑檔名" SRC="RegAppsProcess.asp"

注意事項 用這種方法納入檔案時,不可以在 <SCRIPT> 標記內放入任何程式碼;如果您真的需要這種能,請額外多加一組 <SCRIPT> 標記。

https://www.fishman.idv.tw/phpforum/thread-859-1-1.html
作者文章推薦
懶得打字嗎?讓本助手協助你 【使用進階編輯器請點選右方進階模式】
您需要登入後才可以回覆 登入 | 註冊

本版積分規則

手機版|Archiver|漁家小舖

GMT+8, 2024年4月29日 19:22 , Processed in 0.515447 second(s), 16 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回覆 返回頂端 返回清單