2009-08-26 54 views
2

可以說我有以下頁面:ASP - 確定如果當前的腳本被運行爲包括

# Include.asp 
<% 
Response.Write IsIncluded() & "<br>" 

%> 

# Outside.asp 
<!--#include file="Include.asp" --> 

我需要這個工作,這樣,如果我直接訪問http://Example.com/Include.asp,我看到「真」,但如果我訪問http://Example.com/Outside.asp,我會看到False。我寧願不必向Outside.asp添加任何內容。任何人都可以想出一種方法來在ASP中創建這樣的IsIncluded函數嗎?通過比較__FILE__與$ _SERVER ['PHP_SELF'],我能夠在PHP中創建這樣的功能,但這不會在這裏工作,因爲ASP沒有像我知道的__FILE__之類的東西。

回答

1

嘗試檢查請求的URL並將其與包含進行匹配。在JavaScript中提供的示例

function IsIncluded() { 
    var url = String(Request.ServerVariables("URL")); 
    url = url.substring(0, url.indexOf("?")).substring(0, url.indexOf("#")).substr(url.lastIndexOf("/")); 
    return (url == "Include.asp") 
} 
+0

這工作,如果我有一個函數,返回字符串「Inclue.asp」,我不......可能最終不得不做類似的事情,因爲我不知道這樣的事情是可能的。 – 2009-08-27 19:55:24

+0

一個機會是拋出一個異常,並抓住它,然後調用Server.GetLastError http://www.w3schools.com/asp/asp_ref_error.asp – Rodrigo 2009-08-27 23:09:46

+0

@DrFredEdison:我不知道我理解這句話「如果我有一個函數返回字符串「Inclue.asp」,我不會「?爲什麼需要一個「函數」來返回「Include.asp」,所提出的代碼將存在於Include.asp文件中,那麼所需要的就是包含文件具有與其自己的名稱相匹配的文字字符串。 – AnthonyWJones 2009-08-28 09:53:01

0

通常在ASP中,其包含文件也可以作爲可由客戶端獲取的東西而不是好的做法。如果您特別想阻止客戶端獲取包含文件,請將您的包放入一個文件夾(稱爲「包含」),然後阻止對IIS中該文件夾的訪問。

如果您確實希望用戶能夠訪問包含文件,並且還允許其他頁面包含它,則會爲包含創建一個「主機」頁面。 E.g.:-

# /Includes/Include.asp 
<% 
%> 

# IncludeHost.asp 
<!-- #include virtual="/Includes/Include.asp" --> 

# Outside.asp 
<!-- #include virtual="/Includes/Include.asp" --> 
<% 
    '' #Other content/code here 
%> 

現在,您可以移動該所特有的「include.asp」時,正在直接訪問到IncludeHost.asp文件時,它的代碼和內容。

相關問題