Здравствуйте! Создаю форму регистрации на сайте(точнее учусь создавать)было всё хорошо пока в файле db.php не добавил session_start(); Код: PHP: <?php require "libs/rb.php"; R::setup( 'mysql:host=localhost;dbname=fwt', 'mysql', 'mysql' ); session_start(); ?> Здесь представлен весь код в файле, а не его фрагмент. Упало с таким определением: Цитата: Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:\OSPanel\domains\fwt.loc\index.ph p:1) in C:\OSPanel\domains\fwt.loc\db.php on line 8 и с таким Цитата: Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\OSPanel\domains\fwt.loc\index.ph p:1) in C:\OSPanel\domains\fwt.loc\db.php on line 8 соответственно в каждом файле php в котором есть подключение к данной функции. Пробовал многое и в начале кода ставил и отступы проверял, и ставил в файле кодировку UTF-8 без BOM. И ещё проделывал разные разные штуки, ставил какие-то скрипты(не помню сейчас какие) в начале и конце страницы... Самое интересное, что эта Warning: session_start(): извечный вопрос, как мне показалось... Мне кажется, что в моём случае поле деятельности поиска ошибок для данного кода не очень огромен.))) Что меня побудило вновь задать данный вопрос: у человека всё один в один сделано и это работает, разница лишь в том, что он код пишет в Sublime Text Build 3, а я в Notepad++ (поддерживает кодировку UTF-8 без BOM). Может кто-то сможет не отмахнувшись объяснить, что мне надо ещё сделать или куда заглянуть. У человека-то работает, а!!! Заранее Спасибо! "На свете нет ни чего не возможного - дело только в том, хватит ли у тебя храбрости." Джоан Роулинг
Спасибо за ответ! Но мне, к моему величайшему сожалению не совсем понятно, даже скажем совсем не понятно, что мне там нужно посмотреть. Я кажется понял, какую ошибку? Если какую ошибку, то ту же самую: Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:\OSPanel\domains\fwt.loc\index.php:1) in C:\OSPanel\domains\fwt.loc\db.php on line 8 и Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\OSPanel\domains\fwt.loc\index.php:1) in C:\OSPanel\domains\fwt.loc\db.php on line 8 везде одно и тоже только в этом месте (output started at C:\OSPanel\domains\fwt.loc\index.php:1) где index.php выдаёт название файла login.php или signup.php ... Вот код index.php: PHP: <?php require "db.php"; ?> <?php if( isset($_SESSION['logged_user']) ) : ?> Авторизован! <?php else : ?> <a href="/login.php">Авторизация</a><br> <a href="/signup.php">Регистрация</a> <?php endif; ?>
придётся объяснить матчасть любая веб-страничка или картинка с сайта или что угодно, переданное по протоколу http это сообщение, которое состоит из строк заголовка, за которыми едёт тело сообщения. только в такой последовательности: заголовок-тело. session_start() внутри себя вызывает вывод заголовка ( аналог вызова функции header("Set-cookie…") ) и если перед этим php уже вывел что-то, неважно что, то вывод заголовка уже невозможен. об этом тебе и пишут предупредение. вот здесь указано где причина — где бы начат вывод тела.
Доброго дня! ...извините где? Второй день на форуме, пока ещё плохо ориентируюсь.))) Буду благодарен если ткнёте носом.
В сообщение ошибки и указана причина. Такое сообщение означает, что вы вызываете функцию session_start после того как какие-то заголовки уже отправлены браузеру. Данная функция должна вызываться до того как вы передаете любой текст или заголовки. По этому желательно её писать сразу после открытия <?php . И проверьте, чтобы перед функцией не было никаких пробелов. --- Добавлено --- Можете почитать http://phpfaq.ru/newbie/headers чтобы лучше понять.
(output started at <файл>:<номер строки>) так понятнее? если опять нет, то у вас какое-то расстройство восприятия. компьютеры не для вас
Огромное спасибо! Правда проблема разрешилась частично. Всё перерыл, думаю добраться до php.ini и директиву output_buffering поставить в «On» но пока не знаю где он находится в Open Server. "Пусть в жизни всегда будет момент для счастья, повод для улыбки и время для мечты."
Здравствуйте! Убирал BOM в редакторе, выдаёт такое: Свою проблему решил, с помощью директивы output_buffering. Удовлетворение конечно не получено так как чистота кода отсутствует. И всё таки очень хотелось бы знать где, или в чём была допущена ошибка. Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\OSPanel\domains\fwt.loc\db.php:1) in C:\OSPanel\domains\fwt.loc\db.php on line 7 обратите внимание на конечные файлы из \db.php:1 и в \db.php on line 7... такое только в файле регистрации, а в остальных: файл авторизации Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\OSPanel\domains\fwt.loc\login.php:1) in C:\OSPanel\domains\fwt.loc\db.php on line 7 и файл ihdex Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\OSPanel\domains\fwt.loc\index.php:1) in C:\OSPanel\domains\fwt.loc\db.php on line 7 ковырялся два дня так и не не нашёл в чём проблема... Всем Спасибо и С Наилучшими пожеланиями! "Знания ограничены, тогда ка воображение охватывает целый мир, стимулируя прогресс, порождая эволюцию." Альберт Эйнштейн
@gryllus Ты заголовки отправил уже, так что у тебя ошибка и будет показывать. Убери все заголовки сообщения которые отправляются раньше чем выполняется этот скрипт.
проблема в BOM — невидимые тебе символы присутствуют до <?php это заглушка, а не решение. ошибка вылезет снова когда ты скопируешь файлы на другой сервер. где выдаёт? бро, это не то чем кажется ))) зависит от настроек редактора/вьюера. то что ты увидел это попытка показать текст в кодировке UTF-8 как Windows-1251. неправильный взгляд, а не неправильные данные, понимаешь?
...я всё таки не унялся и попробовал вставить мета-тег <meta charset="UTF-8"> только в db.php файл как казалось мне от него всё зло исходит, а остальные сделал с кодировкой UTF-8 without BOM. И ...voila(вуаля) всё работает(без ошибок) с директивой output_buffering в «Off». Спасибо, всё понятно и доходчиво объясняете. "Чем больше получаешь знаний, тем меньше времени на то, что бы их использовать"
Это я сделал в первую очередь, стало выдавать непонятное: - это мне объяснил artoodetoo. После чего стал искать выход, мне, человек подсказал, что без BOM то же правильно делать надо. У меня голый php код и там соответственно отсутствует мета-тег charset, из-за этого данная ошибка тоже может присутствовать, я его добавил и всё заработало.