den0820
@den0820
Фронтенд Junior разработчик.

Как избавиться от ошибки, возникающей при запуске сессии?

Доброй ночи всем! Столкнулся с такой проблемой: php выдает ошибку (Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\php-trainig\www\db-practic\index.php:67) in Z:\home\php-trainig\www\db-practic\pages\add.php on line 1) о том, что заголовки были уже переданы при запуске сессии. В принципе можно перенести старт сессии в самое начало индексного файла и проблема решится, но дело в том, что я подгружаю в индексный файл, а именно уже в body определенные страницы с помощью require_once, и в одной из этих страниц я работаю с сессиями. Так как же быть в таком случае? Получается что заголоки всегда раньше будут отправляться, так как страница с сессиями подгружается в body, а до body есть еще head со стилями и т.д. Помогите, пожалуйста разобраться с данной проблемой!
Кстати, то же самое происходит, если в одном из подключаемых файлов произвожу редирект с помощью header("Location: somepage.php");
  • Вопрос задан
  • 288 просмотров
Решения вопроса 1
DevMan
@DevMan
любые заголовки (а session_start() отправляет куку) должны быть отправлены до любого вывода в браузер.
если вы не можете этого обеспечить, то ваш помошник - буферизация вывода: php.net/manual/ru/book.outcontrol.php
habrahabr.ru/company/mailru/blog/248573

если по простому, то обычно достаточно в самом начале основного файла добавить ob_start();
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
if (!session_id()) start_session();
Ответ написан
LesteTheMolesterCockensch
@LesteTheMolesterCockensch
Web developer
конвертни документ в utf-8 без BOM, проверь чтобы перед стартом сессии ничего не выводилось
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы