2009-08-26 8 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"という文字列を返す関数がある場合にはうまくいきますが、これは似たような処理が必要になることがあります。 –

+0

例外をスローしてキャッチし、Server.GetLastErrorを呼び出すことです。 http://www.w3schools.com/asp/asp_ref_error.asp – Rodrigo

+0

@DrFredEdison:このステートメントを理解できるかどうかはわかりません文字列 "Inclue.asp"を返す関数があれば、それは "??なぜInclude.aspを返すために "関数"が必要なのでしょうか?提案されたコードはInclude.aspファイルに存在します。インクルードファイルがそれ自身の名前と一致するリテラル文字列を持つ必要があります。 – AnthonyWJones

0

一般的にASPでは、クライアントが取り込むことのできるインクルードファイルも用意されています。特に、クライアントがインクルードファイルを取得しないようにするには、インクルードをフォルダ(「インクルード」と呼ばれる)に置き、IISのそのフォルダへのアクセスをブロックします。

OTHユーザーがインクルードファイルにアクセスできるようにし、他のページにインクルードファイルを含めることができるようにしたい場合は、インクルード用の「ホスト」ページを作成します。 E.g.:-

# /Includes/Include.asp 
<% 
%> 

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

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

あなたは今、それがIncludeHost.aspファイルに直接アクセスされたときに「include.asp」ユニークたコードとコンテンツを移動することができます。

関連する問題