Исправляем ошибку headers already sent by

Исправляем ошибку headers already sent by

От автора: в этом уроке мы рассмотрим, пожалуй, одну из наиболее распространенных ошибок, с которой сталкиваются при программировании на PHP. Эта ошибка возникает при работе с функциями, связанными с отправкой заголовков. При этом мы можем столкнуться с несколькими вариантами сообщений об ошибке, но причина у них будет одинакова – заголовки уже отправлены (headers already sent).

скачать исходникискачать урок

В видео версии урока вы найдете подробное описание вариантов возникновения данной ошибки. Здесь же мы сформулируем вкратце причины и способы решения данной ошибки.

Итак, ошибка эта может возникнуть в случаях, когда в коде вы используете одну из функций, связанных с отправкой заголовков: header(), session_start(), setcookie().

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

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

собственно вывод, который прописан в коде: это может быть пробел, перенос строки, HTML-код и т.д.

вывод в подключаемых файлах

сохранение документа в кодировке UTF-8 с BOM. Это наиболее неочевидная проблема и здесь стоит помнить, что при использовании юникода файл должен быть сохранен в кодировке UTF-8 без BOM.

На этом мы завершим текущий урок. Удачи и до новых встреч!

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии (7)