ASP - определить, выполняется ли текущий скрипт как включаемый - PullRequest
2 голосов
/ 27 августа 2009

Допустим, у меня есть следующие страницы:

# 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. Кто-нибудь может придумать, как создать такую ​​функцию IsIncluded в ASP? Я смог создать такую ​​функцию в PHP, сравнив __FILE__ с $ _SERVER ['PHP_SELF'], но это не сработает, потому что в ASP нет ничего похожего на __FILE__, о котором я знаю.

Ответы [ 2 ]

1 голос
/ 27 августа 2009

Попробуйте проверить запрошенный 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 голосов
/ 28 августа 2009

Как правило, в 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
%>

Теперь вы можете перемещать код и контент, которые были уникальными для «include.asp», когда к нему обращались напрямую, в файл IncludeHost.asp.

...