2

可以说我有以下页面:

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

%>

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

我需要这样才能工作,如果我直接访问http://Example.com/Include.asp,我会看到“True”,但如果我访问http://Example.com/Outside.asp,我会看到 False。我宁愿不必向Outside.asp 添加任何内容。谁能想到在 ASP 中创建这样一个 IsIncluded 函数的方法?通过与 $_SERVER['PHP_SELF']进行比较,我能够在 PHP 中创建这样的函数__FILE__,但这在这里行不通,因为 ASP 没有__FILE__我所知道的任何类似的东西。

4

2 回答 2

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")
}
于 2009-08-27T02:11:39.850 回答
0

通常在 ASP 中,让包含文件也可用作客户端可以获取的东西并不是一个好的做法。如果您特别想阻止客户端获取包含文件,则将您的包含文件放在一个文件夹中(称为“包含”),然后在 IIS 中阻止对该文件夹的访问。

OTH 如果您确实希望用户能够访问包含文件,并且还允许其他页面包含它,那么为包含创建一个“主机”页面。例如:-

# /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 文件中。

于 2009-08-28T09:51:14.343 回答