Проверить, вызван ли скрипт через include

RolCom

Новичок
Проверить, вызван ли скрипт через include

Надо проверить, вызван ли скрипт из другого скрипта путем include, или же к нему обращаются на прямую- тогда прекратить выполнение. Ибо сессия с правом доступа проверяется в скрипте, который вызывает.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
include_file.php
if (!defined('FROM_ADMIN')) die('Хакер? Хе-хе');

index.php
define('FROM_ADMIN',.............);
include('include_file.php');
 

dimagolov

Новичок
как вариант
include_file.php
if (basename(__FILE__) == basename($_SERVER['PHP_SELF'])) { header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found'); die (); }
 

Beavis

Banned
dimagolov
а если файл /index.php будет инклюдить /modules/main/index.php
то что твой вариант сделает?
 

dimagolov

Новичок
Beavis, убедил, через define таки красивее, но....
ИМХО index.php как бы должен запрашиваться на прямую клиентом, это такой особый файлик для web-сервера обычно, то есть причин его инклюдить и не позволять пускать клиенту я не вижу. Если папка ограничивается на доступ, то я это делаю в http.conf.
Ну и ИМХО иметь в проекте одноименные файлы это прямой путь к геморою.
 

Beavis

Banned
dimagolov
а зачем накладывать ограничения на разработчика своим решением...
кто-нибудь захочет сделать структуру сайта типа:
/index.php
/models/index.php
/controllers/index.php
/views/index.php
и т.п... тогда такое решение с basename нафиг нужно.
чтоб было меньше гемороя надо создавать более-менее универсальные решения
 
Сверху