В общем уже часов 5 ломаю голову. У меня сайт состоит из include блоков, т.е: шапка страница футер Где страница - страница авторизации. Проблема при авторизации: Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\domains\GQ\engine\block\header.php:10) in C:\OpenServer\domains\GQ\engine\content\login.php on line 50 Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\domains\GQ\engine\block\header.php:10) in C:\OpenServer\domains\GQ\engine\content\login.php on line 51 Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\domains\GQ\engine\block\header.php:10) in C:\OpenServer\domains\GQ\engine\content\login.php on line 53 Как решить проблему я в принципе знаю, если убрать вывод HTML до 50 строки в файле login.php все будет в порядке. Но проблема в том, что я не могу убрать header.php, т.к. там шапка. Помогите пожалуйста, как решить проблему? Добавлено спустя 7 минут 4 секунды: В голову пришло решение, но оно мне совсем не нравится. Перенести код из 50, 51, 53 строк в функцию. Заместо них выставить переменную в сессии, и в начале сайта проверять есть ли эта переменная в сессии, и там выставлять куки функцией. Если реализовать так, это может на что-то повлиять отрицательным образом? Добавлено спустя 42 минуты 20 секунд: Решено, решение описано выше.
Re: Cannot modify header information - headers already sent То ли кодировка толи заголовки header() Utf-8 без Bom? В коде есть header(); заголовки? если есть то придется либо до html отправлять или использовать буферизацию.
Your буферизацию. Код (PHP): <?php ob_start(); код пхп.... .......... $print = ob_get_contents(); ob_end_clean(); print $print;
Re: Cannot modify header information - headers already sent q0b3rMAN, в каждом из файлов, которые подклчаются по include/require удали завершающий ?> он необязателен и сейчас рекомендуется НЕ использовать его. потому что невидимый глазу перевод строки после него порождает такую хрень как у тебя. Добавлено спустя 3 минуты 12 секунд: Re: Cannot modify header information - headers already sent by буферизация тоже вылечит, но это "заплатка", а не решение проблемы. это как собаку @ ставить вместо исправления ошибки. кстати! другая вероятная причине - где-то происходит ошибка (Warning) и в вывод попадает его текст до твоих header() или session_start(). решается исправлением ошибки
Re: Cannot modify header information - headers already sent Да тут самое главное убрать вывод html-кода после headera,тогда ненужна будет буферизация
Re: Cannot modify header information - headers already sent может до? echo echo .... header(); /////////////// проблему другим способом решить можно. Так же может ругаться когда: while (....) { ..... } header или setcookie или т.д.
Re: Cannot modify header information - headers already sent правильно - до Я когда впервые столкнулся с этим вопросом , сразу воткнул ob_start ,но потом перенес обработчик ,который обновлял header , в начало скриптика и это позволило убрать буферизацию.
Re: Cannot modify header information - headers already sent Решение проблемы: Запомни раз и на всегда, header() (Заголовки) отправляй ДО любого вывода. Т.е. Код (Text): <?php header(..); ?> <html...> Почему? Потому что сначала отправляются заголовки, чтобы клиент сформировал "представление" о документе, а на основе этого решал что делать. А так ты (а может и не ты) отсылаешь ему заголовки, чтото пытаешься потом вывести и снова отправить заголовки. Чтобы иметь представление: http://phpmove.ru/header.html
Re: Cannot modify header information - headers already sent уууууууууиииииииии решил прям :3 а ты решишь проблему когда header в любом случае потребуется захренячить в центр кода ?
Re: Cannot modify header information - headers already sent У меня навязывается только одна мысль - если header потребовалось, как вы сказали, "захренячить" в центр кода, то это яркий пример рукоанусной реализации Но если, а такое вполне может быть, я все-таки ощибаюсь, то буферизация в помощь (кстати, работает быстрее, чем echo). Но я предпочитаю (как и многие мне знакомые PHP-программисты), отправлять заголовки ДО любого вывода. Иными словами "захренячить" их в начало кода
Re: Cannot modify header information - headers already sent Не стоит так думать. Буфера рулят. Без них никуда.
Re: Cannot modify header information - headers already sent ---------------------------------- ЗОЛОТЫЕ слова :3 : Добавлено спустя 2 минуты 31 секунду: Re: Cannot modify header information - headers already sent by через это все проходили. Улучшали, оттачивали свои идеалы в программировании и искали "лучший, быстрый, не всегда легкий выход"
Re: Cannot modify header information - headers already sent http://images.yandex.ru/yandsearch?text=%D0%B1%D1%83%D1%84% ... type=image
Re: Cannot modify header information - headers already sent Буфера это хорошо, от них еще никто не отказывался
Re: Cannot modify header information - headers already sent Стопицот хидеров можно отгрузить из любого места кода при условии что никакой не конфликтует с любым другим. Чтобы передать байт информации в браузер сервер предваряет посылку кучей байтов объясняющих браузеру что значит этот самый байт. Если сервер вас опередил - сушите весла. Все просто. Сообщение header already sent хороший признак того что логика скрипта неправильная и надо ее менять.
Re: Cannot modify header information - headers already sent ты что-то походу не врубаешься как оно работает.
Re: Cannot modify header information - headers already sent Ты все сказал? а то я нупик и это не понимаю.Подавай свежатину с веслами.
Re: Cannot modify header information - headers already sent Ну вы-то врубились так что не вытащить уже.
Re: Cannot modify header information - headers already sent то что ты тут написал это поток сознания, не связанный с проблемой "headers already sent".