Покинул форум
Сообщений всего: 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 и во многих текстовых редакторах есть эта возможность. Всё.
OrmaJever
Отправлено: 29 Февраля, 2012 - 21:08:55
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Стереть и написать снова слово "Сохранить"
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Tox
Отправлено: 29 Февраля, 2012 - 21:10:39
Посетитель
Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011 Откуда: Россия
Помог: 0 раз(а)
да я уже так делал) не первый день в notepad)) все равно абракадабра
----- In Console We Trust. Code hard. Or die.
OrmaJever
Отправлено: 29 Февраля, 2012 - 21:14:18
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Может есть мета тег с другой кодировкой или header() ?
А если нету, то их бы добавить
Покинул форум
Сообщений всего: 7190
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
OrmaJever пишет:
Но ведь без этих 3 бафтов програмы тоже могут отличить в какой кодировке файл! От них толку ноль?
Не могут. Все определения кодировок построены на статистическом анализе частоты использования имеющихся символов, и не дают 100% гарантии точности определения. Метки ВОМ как раз решают эту проблему.
Что касается "UTF-8 без ВОМ", то это не отдельная кодировка, а такой своеобразный хак для PHP, который не умеет корректно работать с метками ВОМ, точнее почему-то считает их печатными символами. Вот и приходится в файле с кодировкой utf-8 вырезать заветные три символа.
----- Чем больше узнаю, тем больше я не знаю.
KoO
Отправлено: 05 Мая, 2012 - 11:40:42
Новичок
Покинул форум
Сообщений всего: 0
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Помоги плиз. Проблема как у всех, только мой сайт лежит на моём компе с Denwerом.
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\localhost\www\shop_mustang1\index.php:1) in Z:\home\localhost\www\shop_mustang1\sapka.php on line 2
Вот код
Примерно тоже самое стоит на другом сайте,но там такой ошибки нет. BOM через Notepad++ отрубил, до того было 2 ошибки, вот осталась одна, как исправить не знаю.
DelphinPRO
Отправлено: 05 Мая, 2012 - 17:25:48
Активный участник
Покинул форум
Сообщений всего: 7190
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
минут пять думал, что же такое "Сапка" O_o (sapka.php)
Понимание пришло неожиданно - это же "Шапка"!
Оба файла сохраните в utf8 без BOM
Попробуйте неиспользовать закрывающие теги ?> в самом конце файлов
----- Чем больше узнаю, тем больше я не знаю.
KoO
Отправлено: 05 Мая, 2012 - 19:53:05
Новичок
Покинул форум
Сообщений всего: 0
Дата рег-ции: Май 2012
Помог: 0 раз(а)
DelphinPRO пишет:
минут пять думал, что же такое "Сапка" O_o (sapka.php)
Понимание пришло неожиданно - это же "Шапка"!
извините, был файл уже Шапка,пришлось изощрится
про UTF8 уже сделал,после этого пропала ошибка типа этого Cannot send session cookie - headers already sent by (output started at script1.php:1 [ * ]) in script2.php on line 2 [ ** ]
Но вот 2 ошибка не пропадает,а с ?> как его убрать, тогда же работать ничего не будет
Хаха прикол, запустил заново дримвеер и сайт и вуаля
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\home\localhost\www\shop_mustang1\index.php:1) in Z:\home\localhost\www\shop_mustang1\sapka.php on line 2
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\localhost\www\shop_mustang1\index.php:1) in Z:\home\localhost\www\shop_mustang1\sapka.php on line 2
Покинул форум
Сообщений всего: 7190
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
KoO пишет:
а с ?> как его убрать, тогда же работать ничего не будет
а вы пробовали? Это широкоизвестный прием для исключения случайных пробелов в выводе (Добавление)
я вот сейчас скопировал ваш код, сохранил без БОМ и все работает как надо, без ошибок.
Вы уверены, что ваши файлы в utf-8 без BOM?
может дримвивер пересохраняет файлы не в той кодировке? (Добавление)
перед <?php не должно быть пробелов и переводов строк.
Блин, об этой проблеме столько написано, что просто нереально самому в ней не разобраться.
----- Чем больше узнаю, тем больше я не знаю.
KoO
Отправлено: 05 Мая, 2012 - 20:34:31
Новичок
Покинул форум
Сообщений всего: 0
Дата рег-ции: Май 2012
Помог: 0 раз(а)
еслиб я ковырялся в php годик или 2, я бы наверно не мучился, но я учусь и у нас работа по созданию "Магазина" да да,в кавычках)))
и в этой сфере я лишь 3 недели))
может я прикреплю файл и вы посмотрите?
Покинул форум
Сообщений всего: 7190
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
файлы index.php и niz.php сохранены в UTF-8
а надо в UTF-8 without BOM
т.е. в данном случае мешает как раз та самая метка BOM в index.php
----- Чем больше узнаю, тем больше я не знаю.
KoO
Отправлено: 05 Мая, 2012 - 20:57:33
Новичок
Покинул форум
Сообщений всего: 0
Дата рег-ции: Май 2012
Помог: 0 раз(а)
касяк,я как раз лишь index не запускал в нотепаде++ и там не менял))
сейчас проверю (Добавление)
помогло, но эм, появилась маленькая загвоздочка, теперь весь сайт куча каракуль как тогда с этим быть?
о это прикольно, без BOM каракули и сайт адско снесло влево, а с BOM всё отлично,что за бред?
Покинул форум
Сообщений всего: 7190
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
в HTML <meta http-equiv="content-type" content="text/html; charset=utf-8" />
в htaccess AddDefaultCharset utf-8
кодировка таблиц в БД - UTF8
кодировка соединения с БД utf-8
----- Чем больше узнаю, тем больше я не знаю.
KoO
Отправлено: 05 Мая, 2012 - 21:12:51
Новичок
Покинул форум
Сообщений всего: 0
Дата рег-ции: Май 2012
Помог: 0 раз(а)
эм, htaccess вообще не существует
в БД Utf-8 стоит, а вот про кодировку соединения я не понял
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.