Лучше ли проверять определенную константу, проверить URL-адрес или любые другие способы …
что-то вроде
if(!defined(INCLUDED))
из
if($_SERVER['REQUEST_URI'] == $_SERVER['PHP_SELF'])
Каким образом вы проверяете, был ли доступ к файлу напрямую … Кроме того, важно ли предотвращать прямой доступ к страницам … (я полагаю, что сайт должен работать так, как он был разработан, поэтому прямой доступ к нему будет идти против этого, но ) Что ты думаешь
Определение константы, вероятно, лучший способ сделать это, не вникая в тонны кода … Просто определите константу перед вашей линией включения и проверьте, не определено ли это во включенном файле …
основной файл
<?php define("IS_INCLUDED",true); include "included_file.php"; ?>
included_file.php
<?php if(!defined("IS_INCLUDED")){ header("Location: error_page.php"); } ?>
Таким образом, если они обращаются к странице, константа не будет определена, и они будут перенаправлены туда, где вы хотите.
Если вы не хотите, чтобы к ним можно было обращаться напрямую, вам не нужно взламывать файлы. Просто поместите их в каталог за пределами общедоступного каталога, и они не могут быть доступны публике. Ваши PHP-скрипты будут по-прежнему иметь доступ к ним легко.
Существует три подхода к этой проблеме, которые я обычно вижу / использую:
В качестве примера (2):
RewriteEngine On RewriteRule ^include/ [R=404,L]
Это отправляет файл не найденной ошибке при попытках попасть в каталог include.