Как защитить файлы инклюда от прямого вызова?. Статьи. wb0.ru - Все для веб-мастера, on-line сервисы

Как защитить файлы инклюда от прямого вызова?

Итак, как это делается. Далеко ходить не будем. Рассмотрим как реализовано в CMS Joomla. В файле index.php корневой директории в самом начале есть такая строчка:

define( '_JEXEC', 1 );

А в файлах подключаемых компонетов, модулей и т.д. (тоже в самом начале) такая:

defined('_JEXEC') or die('Restricted access');

Собственно все. В index.php в корневой директории создается константа командой define c именем " _JEXEC" и значением "1". В файлах подключаемых компонетов при помощи функции defined("_JEXEC") мы проверям существование константы "_JEXEC". Если константа не найдена результат работы функции будет false, в этом случае пишем сообщение "Доступ запрещен" и останавливаем скрипт с помощью функции die (пcевдоним функции exit()).

По аналогии также делаем и у себя. Вот код демо-страницы index.php:

  1. <?php define( '_JEXEC', 1 );?>
  2. <h2>Напишите как защитить файлы инклюда от прямого вызова! </h2>
  3. <br />
  4. <h4 style="color:#090">Ответ:
  5. <?php include("inc/response.php"); ?>
  6. </h4>
Инклюд-файл inc/response.php:

  1. <?php defined('_JEXEC') or die('Ай-яй-яй, сюда нельзя!');
  2. echo 'очень просто. Этот ответ находится в "инклюдированном" файле, попробуйте обратиться к нему напрямую, дописав в строке браузера /inc/response.php'?>

Все очень просто. В коде приведены имя константы и ее значение в том виде, как написано в файлах Joomla. Имя константы и ее значение могут быть любыми, так что желательно придумать свое. Помните только, что имена констант пишутся в верхнем регистре.


Дата публикации: 11.08.2010
ruseller.com

Статьи по теме:

   Ваш псевдоним:
Ваш комментарий:

Новости Интернет


Поиск




Наши партнеры




Последний пересчет

тИЦ:07 Окт 15
PR:09 Дек 13

Посетители

On-Line:18
Рекорд:1794
Зафиксирован:01 Окт 13

Наши партнеры

wservices.ru - регистрация доменов, Whois-сервисы Смайлы на все случаи жизни


Календарь событий


 
Copyright © 2006-2017, wb0.ru