untied
Сдвинутый новичок
Непонятки с headers_sent()
В моем скрипте несколько файлов подключаются с помощью include(). Заранее неизвестно, какие именно файлы подключаются. Поэтому в одном случае нужно сохранить вывод данных подключенными скриптами и распечатать. А в другом случае нужно отследить вызов header("Location: ..."), который может быть сделан в одном из подключаемых файлов, и, соответственно, уже больше ничего не печатать.
Выглядит это примерно так:
Ну дык вот. Я обнаружил, что независимо от того, есть вызов в подключенном файле функции header() или нет такого вызова -- функция headers_sent() всегда выдает FALSE (то есть блок 'else' не выполняется вообще никогда).
В мануале по Output control я прочел, что вызов функции ob_start() никак не влияет на отправку header-ов. Однако, что-то работает неправильно.
Как можно исправить такую ситуацию? Мне нужно отслеживать вызов функции header() подключаемыми файлами.
В моем скрипте несколько файлов подключаются с помощью include(). Заранее неизвестно, какие именно файлы подключаются. Поэтому в одном случае нужно сохранить вывод данных подключенными скриптами и распечатать. А в другом случае нужно отследить вызов header("Location: ..."), который может быть сделан в одном из подключаемых файлов, и, соответственно, уже больше ничего не печатать.
Выглядит это примерно так:
PHP:
$a_filelist = array(); // список подключаемых файлов
$h_fileoutput = array(); // хэш выводимых данных
// ... - здесь заполняется массив $a_filelist именами нужных файлов
foreach ( $a_filelist as $file )
{
ob_start();
include($file);
$h_fileoutput[$file] = ob_get_contents();
ob_end_clear();
}
if ( !headers_sent() )
{
// печатаем содержимое хэша по определенному алгоритму
// сам алгоритм в данном случае не важен
}
else
{
// один из подключенных файлов вызвал команду
// header("Location: ...");
// печатать ничего не нужно
}
В мануале по Output control я прочел, что вызов функции ob_start() никак не влияет на отправку header-ов. Однако, что-то работает неправильно.
Как можно исправить такую ситуацию? Мне нужно отслеживать вызов функции header() подключаемыми файлами.