include инфа

  • Автор темы bookworm
  • Дата начала

bookworm

Guest
include инфа

Может быть вопрос и чайниковский, но пишу сюда:
возможно ли из файла PHP узнать, что он был включен в другой и, если - да, то в какой.
 

ForJest

- свежая кровь
[m]debug_backtrace[/m]
nl2br
Ценность твоего замечания на поставленный вопрос равна нулю.
 

nl2br

Новичок
Код:
<?php
// filename: a.php

function a_test($str)
{
   echo "\nHi: $str";
   var_dump(debug_backtrace());
}

a_test('friend');
?>

<?php
// filename: b.php
include_once '/tmp/a.php';
?> 

 Results when executing /tmp/b.php:
если я ничего не понимаю извините заранее,
вопрос стоял так
возможно ли из файла PHP узнать, что он был включен в другой и, если - да, то в какой.
 

ForJest

- свежая кровь
nl2br
В данном случае a.php и есть
файла PHP узнать, что он был включен в другой
а b.php
если - да, то в какой
Если ты не понимаешь смысла вопроса, пожалуйста не вставляй бессмысленные замечания. Это никак не помогает отвечающему и в целом, с моей точки зрения, является дурным тоном.
 

nl2br

Новичок
т.е. я могу узнать из файла a.php включён ли он в какой-нибудь файл?
 

ys

отодвинутый новичок
nl2br

ForJest дал исчерпывающую ссылку на твой вопрос и на вопрос автора.
 

ForJest

- свежая кровь
nl2br
Ответ: я не знаю, сможешь ли ты совершить достаточно мозговых усилий, для того чтобы узнать это. Я это смогу сделать.
 

bookworm

Guest
Получается, что если я в a.php
пропишу

$a=debug_backtrace();

То в b.php я увижу в $a[0]["file"] путь к b.php
А в a.php там будет пусто?

К чему я вообще все это - надо, чтобы инклюды отдельно не выполнялись.
Конечно, можно сделать их не php, и запретить на их тип в htaccess доступ.

Но, положим, надо сделать так, чтобы они остались php.
Вот из-за чего сыр-бор.
 

SiMM

Новичок
bookworm, по моему, ты сам себе выдумал проблему (с учётом наличия htaccess и возможности записать скрипты вне web-root, а если в инклудах всего лишь функции/классы - проблемы вообще нет).
 

iliah

Новичок
bookworm
А ты пробовал?

положить свои пхп файлы в отдельную папку?
закрыть ее хтацессом?
проинклюдить какой-нибудь из этих файлов?
вызвать его напрямую?

попробуй
 

ForJest

- свежая кровь
bookworm
Тебе нужно обойти весь возвращённый массив и поискать там в соответствующем поле include или require.
 

bookworm

Guest
А :) Точно, что-то как-то я недопер что можно сложить php отдельно и закрыть из htaccess'ом не меняя расширения!
:)
Спасиб. Думаю, это уже выход.
 

gms

Guest
bookworm

как вариант, можно из скрипта, в котором происходят все инклюды, определять какую-нибудь константу, например:
DEFINE("SCRIPTRUNNING", true)

а в файлах, которые инглюдятся, первой строкой вставить код:
IF (!SCRIPTRUNNING) die('go away!');
 

SiMM

Новичок
gms, только не if (!SCRIPTRUNNING), а if (![m]defined[/m]('SCRIPTRUNNING')), поскольку первое генерирует нотис в случае неопределённости константы. Мелочь, а неприятно :)
 
Сверху