[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как правильно защитить include от прямого вызова?
deeand7
Всем привет!
Хочу защитить include от прямого вызова, при этом чтобы выводилась моя страница ошибки (error/403.php). Не знаю как это осуществить?

В инете нащел вариант, но не знаю как довести до ума. Так как в скриптах не силен.


<?php
if ($_SERVER['SCRIPT_FILENAME'] == '<path to php include file>') {
header('HTTP/1.0 403 Forbidden');
exit('Forbidden');
}
?>


Либо такой вариант:
<?php
if(!defined('MyConst')){die('Direct access not premitted');}
?>

<?php

define('MyConst', TRUE);
?>


Может кто подскажет?



Спустя 7 минут, 49 секунд (3.04.2012 - 20:03) johniek_comp написал(а):
я делаю так, в index.php создаю константу
// создаем константу для того что бы файлы ядра нельзя было вызвать напрямую
define(MEX, '');


дальше у меня идет __autoload, и подключаю файлы, в каждом файле пишу в начале
defined('MEX') or die("Нет доступа");


если файл включить напрямую, то Нет доступа, а если через index.php подключить то все норм.

ну и надо не include а include_once брать

Спустя 11 секунд (3.04.2012 - 20:03) Игорь_Vasinsky написал(а):
если у тя точка входа - один файл (index.php) или ты, например везде конфиг файл вешаешь (config.php) то как вариант объявить в них константу, и а подключаемом файле проверять - объявлена ли она, в противном случае выводить 404 заголовок

Спустя 14 часов, 58 минут, 55 секунд (4.04.2012 - 11:02) deeand7 написал(а):
Не получается. Вот что у меня:
 
В include :
<?php if(!defined('MyConst')) header('Location: http://localhost/rezinovy_sajt/error/404.php'); ?>

В файле index.php :
<?php define('MyConst', TRUE);?>


В htaccess файл 404 прописан, но страница с ошибкой так и не показывается.
В чем может быть причина?

Спустя 15 минут, 7 секунд (4.04.2012 - 11:17) Nikitian написал(а):
Все инклюды в отдельную папочку с .htaccess
Order allow,deny
Deny from all

И никаких танцев с бубнами.

Спустя 2 часа, 43 минуты, 21 секунда (4.04.2012 - 14:01) deeand7 написал(а):
Спасибо всем особенно, Nikitian, за супер-мега простое решение! Заработало!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.