Определить, если 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-файле и, если она не установлена, перенаправьте их.

Другие вопросы по тегам