Почему сервер таинственным образом отправляет заголовки после загрузки страницы?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Почему сервер таинственным образом отправляет заголовки после загрузки страницы?

Сообщение Anonymous »

Следующий код по какой-то странной причине работает без ошибок, когда условие истинно. Хотелось бы знать, почему, вопреки ожидаемой ошибке, это работает.

Код: Выделить всё

include('includes/header.html');
echo "";
if (!ISADMIN && !(isset($_SESSION['id']) && isset($_GET['id']) && $_SESSION['id'] == $_GET['id'])) {
@require('includes/login_functions.inc.php');
redirect_user(''); // Redirects successfully
}
Приведенная выше функция redirect_user() находится во включаемом файле, и я вызываю эту функцию в верхней части большинства моих PHP-файлов. В основном функция вызывает

Код: Выделить всё

header("Location: $url")
где $url — это локальная переменная области функции.

Заголовки уже отправлены, а HTML уже был как динамически через PHP, так и статически через HTML, напечатанный на странице. Однако, согласно условию, пользователь все равно перенаправляется, если условие возвращает true. Причина этой проблемы заключается в том, что когда я пытаюсь воспроизвести ее в новом файле, я получаю ожидаемую ошибку:


Предупреждение: невозможно изменить информацию заголовка — заголовки уже отправлены (вывод начинается с


Кроме того, я получаю эту ошибку, как и ожидалось, без условия, просто вызывая redirect_user().

Каталог include находится на GitHub репозитория. Страница на активном сайте — http://www.bforborum.com/test

Edit

Я обнаружил, что выходная буферизация включена, и я отключил ее, но безрезультатно. Если для этого параметра установлено значение 0, все перенаправляется независимо от того, отправляются ли заголовки

Подробнее здесь: https://stackoverflow.com/questions/584 ... -page-load
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»