Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
В связи с участившимися случаями этого заболевания, думаю, стоит написать небольшую инструкцию, как от этого лечиться. Ну, лекарство номер 1 - это Гугл и Яндекс, но кому лень анализировать многочисленные рутинные обсуждения этой проблемы, вот вам краткая памятка, которая все вопросы должна снимать.
Итак, у на появилась такая вещь:
Cannot send session cookie - headers already sent by (output started at script1.php:1 [ * ]) in script2.php on line 2 [ ** ]
Нам сообщают, что заголовки уже были посланы и больше нельзя. Заголовки могут встречаться только один раз в начале документа.
Написано на какой строке в каком скрипте начался вывод в браузер(отмечано пушистой звездочкой) и на какой строке мы попытались послать заголовок (отмечено 2 пушистыми звездочками).
После вывода информации в браузар слать заголовки нельзя. Остается только осмыслить, что такое вывод в браузер. Да-да, если вы это читаете, то вы это не осмыслили.
* команды вывода php (echo, print...)
* различные warnigs, notices, которые произошли в результате других операций в скрипте.
* ЛЮБЫЕ СИМВОЛЫ, расположенные до <?php. Это и пробелы, и энтеры, и невидимый символ BOM.
Википедия про BOM пишет:
Этот способ позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также он иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов. Файлы, следующие этому соглашению, начинаются с таких последовательностей байтов:
UTF-8
EF BB BF
UTF-16BE
FE FF
UTF-16LE
FF FE
UTF-32BE
00 00 FE FF
UTF-32LE
FF FE 00 00
Короче, скрипты, написанные в UTF-8 следует сохранять без BOM и во многих текстовых редакторах есть эта возможность. Всё.
IgVlGr
Отправлено: 23 Апреля, 2011 - 14:23:58
Новичок
Покинул форум
Сообщений всего: 14
Дата рег-ции: Апр. 2011
Помог: 0 раз(а)
Все равно не пойму, почему никто не делает буферизацию вывода!!!????
OrmaJever
Отправлено: 23 Апреля, 2011 - 20:01:17
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
IgVlGr пишет:
Все равно не пойму, почему никто не делает буферизацию вывода!!!????
почему не кто не обновляется на 5.3?
У меня ещё вопрос к знающим людям:
Зачем придумали BOM стмволы? какая у них функция?
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
EuGen
Отправлено: 23 Апреля, 2011 - 20:04:34
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Многие программы Windows (включая Блокнот) добавляют байты 0xEF, 0xBB, 0xBF в начале любого документа, сохраняемого как UTF-8. Это метка порядка байтов Юникода (англ. Byte Order Mark, BOM), также её часто называют сигнатурой (соответственно, UTF-8 и UTF-8 with Signature). По наличию сигнатуры программы могут автоматически определить, является ли файл закодированным в UTF-8, однако файлы с такой сигнатурой могут некорректно обрабатываться старыми программами, в частности xml-анализаторами. Такие редакторы, как Notepad++, Notepad2 и Kate позволяют явно указывать, следует ли добавлять сигнатуру при сохранении UTF-файлов.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
OrmaJever
Отправлено: 23 Апреля, 2011 - 20:13:28
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
EuGen пишет:
Многие программы Windows (включая Блокнот)
Ясно микрософт как всегда отличились
EuGen пишет:
По наличию сигнатуры программы могут автоматически определить, является ли файл закодированным в UTF-8
Но ведь без этих 3 бафтов програмы тоже могут отличить в какой кодировке файл! От них толку ноль?
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
EuGen
Отправлено: 23 Апреля, 2011 - 20:14:54
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Ну Вы же сами ответили на свой вопрос:
OrmaJever пишет:
Ясно микрософт как всегда отличились
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Champion
Отправлено: 23 Апреля, 2011 - 20:24:12
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Есть такие кодировки как UTF-16LE и UTF-16BE, они отличаются тем, что в них разный порядок байт - в одной сначала старший байт, в другой - младший. Вот чтоб это отличить вставляется BOM. Зачем он в UTF-8 - я не понимаю)
Ангел Тьмы
Отправлено: 25 Апреля, 2011 - 21:08:17
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2011
Помог: 0 раз(а)
У меня проблема, либо использовать сессию, или куки) одновременно ошибку выдаёт. ( помогите))
ASDA
Отправлено: 07 Мая, 2011 - 21:38:58
Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2011
Помог: 0 раз(а)
а в таком редакторе, как "svoi.net:php Edit", кто-нибудь знает, как сохранять UTF-8 без БОМ?
никак не могу найти
хотя там есть возможность показать невидимые символы. но после нажатия ничего не показывает(
может у меня какая-то другая ошибка?
Вот код:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\denwer\www\denwer\new\s1.php:6) in Z:\denwer\www\denwer\new\s1.php on line 7
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\denwer\www\denwer\new\s1.php:6) in Z:\denwer\www\denwer\new\s1.php on line 7
molchun201
Отправлено: 07 Мая, 2011 - 21:56:39
Посетитель
Покинул форум
Сообщений всего: 295
Дата рег-ции: Февр. 2011 Откуда: Менеск
Помог: 5 раз(а)
Вот так делай и всё, нельзя html или любой другой вывод делать до session_start();
Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2011
Помог: 0 раз(а)
Спасибо огромное, molchun201
KuPbI4
Отправлено: 23 Октября, 2011 - 12:26:25
Частый гость
Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2010
Помог: 0 раз(а)
У меня возникла та же проблема. Warning: Cannot modify header information - headers already sent by (output started at Z:\home\lab1\www\index.php:5) index.php
Ошибка указывает на пятую строку, это окончание строки функции вывода echo " ";
Но я тут не пойму где тут лишняя строка или лишний пробел, вообще не могу найти.
Перекодировал конечно в Notepad++ в UTF-8 без BOM - безрезультатно, даже пробовал буферизацию - ob_start(); и ob_flush();.
Есть какие то варианты решения этой проблемы?
SAD
Отправлено: 23 Октября, 2011 - 12:36:34
Постоянный участник
Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009 Откуда: Днепропетровск, Украина
Помог: 75 раз(а)
мдэээ.
вы вообще то подключили файл, в котором происходит вывод информации - этого недостаточно?
KuPbI4
Отправлено: 23 Октября, 2011 - 12:41:45
Частый гость
Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2010
Помог: 0 раз(а)
SAD пишет:
мдэээ.
вы вообще то подключили файл, в котором происходит вывод информации - этого недостаточно?
Давайте не будем переходить на личности типа "мдэээ" и т.д.
Если без подключения файл, то ошибок нет, это я знаю.
Мне бы хотелось, чтоб когда мы введем в поле ввода и жмем, и на одной той же странице выводился график и все. Если это невозможно, то отключу файл, и проблема решена.
Tox
Отправлено: 29 Февраля, 2012 - 21:06:06
Посетитель
Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011 Откуда: Россия
Помог: 0 раз(а)
Парни, а вот такой вопрос - юзаю Notepad++, выбрал кодировку UTF-8 (без BOM).
В файле есть форма с кнопкой
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.