Определить, если PHP не открывается с помощью include
Можно ли каким-либо образом определить, просматривается ли файл PHP самим браузером, а не включается?
Я использую PHP для обработки некоторого кода, а затем пишу его на другой странице, на которой этот PHP включен (используя PHP include()). Я не хочу, чтобы он просматривался сам по себе, и я хочу, чтобы к нему обращались, только если он включен (опять же, используя PHP include ())
Я хотел добиться чего-то вроде этого:
if (browser is not opened by include){
header("Location: /forbidden");
die();
}
else {//do nothing}
Теперь я могу достичь того, чего хочу?
3 ответа
Похоже, вы можете попробовать обратный метод этого ответа:
Проверка PHP, если файл загружается напрямую, а не включается
Вместо добавления define('APP_RAN')
в "базовом" файле добавьте его во включаемый файл и добавьте другой фрагмент в базовый файл.
Поместите это вне своего корня сети. Он не доступен для веб-браузеров и т. Д.
Альтернативное решение состоит в том, чтобы объявить константу в вашем загрузочном или конфигурационном файле (независимо от того, что вы используете), а затем проверить ее в ваших включениях. Если его нет, включите вызов die()
,
В том порядке, в котором я бы порекомендовал добиться желаемого результата, прежде всего, быть лучшим.
Поместите их в папку за пределами веб-корня.
ИЛИ ЖЕ
Создать .htaccess
запретить доступ к папке кроме серверов ip.
Options -Indexes
<Files *.php>
Order Deny,Allow
Deny from all
Allow from servers ip
Allow from servers ip if more than one
#Allow from your ip if you want to
</Files>
ИЛИ ЖЕ
Создайте переменную в родительском php-файле и, если она не установлена, перенаправьте их.