пусть в файле index.php есть инклуд PHP: <?php $basename="database.db"; ..... ..... include ('readbase.php'); ...... ?> В файле readbase.php определены инструкции для чтения базы данных и т.д. Вопрос вот в чем, что будет хорошего если вбить в адрессную строку readbase.php Как можно защититься от этого и вообще стоит ли? Думал сделать так, чтобы сам файл readbase.php определят вызывается он напрямую, или инклудиться.
тоже, что если вбить index.php. Код исполнится. А вот с ошибкой или как-нить ещё, это от тебя зависит
Вряд ли. Ведь имя базы установлено не будет PHP: <?php $basename="database.db"; ..... ..... include ('readbase.php'); ...... ?> $basename В этом случае будет неопределена и скрипт readbase.php вызовет ошибку. Или я все усложняю?
а потом выяснится что на хостинге включен register_globals и имя базы достаточно передать в адресной строке броузера...
ВЫКЛЮЧИТЬ создай константу index PHP: <? define("INDEX",true); ?> file 2 PHP: <? if(!defined('INDEX')) die("Error"); ?>
В index.php создавай константу index, а в readbase.php проверяй, создана ли она. Если теперь попробовать открыть сразу readbase.php, то вылезет ошибка (или любая другая операция, которую ты напишешь), так как контсанта не будет создана. Если же пользователь идет через index.php, то все отобразится корректно. Объявить ее надо до инклуда, естественно. Но, по-моему, ничего фатального не произойдет, если кто-то попытается открыть readbase.php напрямую.
Ничего фатального, просто некрасиво будет (немного) сообщения об ошибке (не найден файл и т.д.) readbase.php, может просто перенаправить браузер куда надо. Кстати, а как выключить REGISTER_GLOBALS? (раз разговор уже зашел рпо это).