Покинул форум
Сообщений всего: 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 и во многих текстовых редакторах есть эта возможность. Всё.
Balrog
Отправлено: 19 Января, 2015 - 14:22:46
Новичок
Покинул форум
Сообщений всего: 0
Дата рег-ции: Янв. 2015
Помог: 0 раз(а)
Здраствуйте.
Возникла у меня описанная в этой теме ошибка.
Суть проблемы вот в чем. Есть у меня код (честно притыренный и переработанный под свои нужды ). Сам по себе, он работает нормально (сессия начинается в начале страницы), хотя и не хочет отправлять сообщение с mail.ru (жалуется на неправильные заголовки). Но дело в том, что мне необходимо вставить его в сайт на основе wordpress и тут начинаются проблемы. Я пытаюсь вставить его как "страницу". Для возможности добавлять php код во встроенном текстовом редакторе, добавил в файл используемой "темы" functions.php следуйщие строки:
Warning: session_start() [function.session-start]: Cannot send session cookie — headers already sent by (output started at W:\domains\wp-vodokanal\wp-content\themes\twentytwelve\header.php:13) in W:\domains\wp-vodokanal\wp-content\themes\twentytwelve\functions.php(512) : eval()’d code on line 2
Warning: session_start() [function.session-start]: Cannot send session cache limiter — headers already sent (output started at W:\domains\wp-vodokanal\wp-content\themes\twentytwelve\header.php:13) in W:\domains\wp-vodokanal\wp-content\themes\twentytwelve\functions.php(512) : eval()’d code on line 2
Насколько я понимаю - я делаю, в корне, неправильно, пытаясь впихнуть сессию как "страницу", так как вначале отсылаются заголовки из файла headers.php. Если же вставляю сессию и связанный с ней код в начало файла headers.php, все работает но "криво" - после отправки данных, меня переадресовывает на главную страницу, вместо того, чтобы остаться на текущей и выбить мне сообщение об отправке/ошибке. А когда перехожу на нужную страницу, то сообщения об отправке/ошибке - присутствует.
Так же, вычитал совет в настройках PHP выставить в output_buffering значение 4096, что приводит уже к другим ошибкам (видимо связано с превышением лимита буфера для заголовков).
Понимаю, что делать видимо пытаюсь неправильно, но в упор не знаю куда можно грамотно впихнуть код, чтобы он без проблем работал.
Заранее благодарен.
ПС: Я в программировании новичек и даже не могу назвать себя программистом. Поэтому, не пинайте сильно.
zapatronen
Отправлено: 04 Февраля, 2015 - 15:54:43
Гость
Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
У меня ошибка появляется не сразу.
Добавляю в массив 10 товаров, вывожу их в корзине и там же могу менять кол-во товара при помощи импутов и формы. Все меняется прекрасно, но стоит добавить 11й товар и при попытке поменять у него кол-во товара, то сразу выскакивает ошибка:
Warning: Cannot modify header information - headers already sent by (output started at /home/users2/a/adminbul/domains/arduino.bulbattery.com/cart.php:24) in /home/users2/a/adminbul/domains/ arduino.bulbattery.com/cart.php on line 10
Все проверил на наличие лишних символов. Но у всех проблема сразу на лицо, а у меня появляется только после того как массив увеличивается на 11+ ключей со значениями
В массиве ключ-это артикул товара, а значение- это кол-во товара
Может я открыт новый способ получить ошибку Cannot modify header information?
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Оой
Ну куда от тебя деваться
Конкретно тебе проще всего будет просто включить кеширование вывода
Справишься?
Погугли
zapatronen
Отправлено: 04 Февраля, 2015 - 16:41:04
Гость
Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
))
сделал, ошибка пропала, но, чтобы увидеть обновления такие как : товар удален, товар добавлен и изменение кол-ва товара не отображаются пока не удалю кеш файл
может откинуть куки и перейти на сессии? или таже херня будет? (Добавление)
или можно как то создавать новый файл-кеш при обновлении страницы
esterio
Отправлено: 04 Февраля, 2015 - 16:43:32
Активный участник
Покинул форум
Сообщений всего: 5027
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
zapatronen
сессии работают на куках
zapatronen
Отправлено: 04 Февраля, 2015 - 16:49:55
Гость
Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
то есть проблема останется? (Добавление)
ааа то есть соединить куки и сессии
LIME
Отправлено: 04 Февраля, 2015 - 17:09:14
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
даааа
конечно
пс: просто интересно какой зверь получится
zapatronen
Отправлено: 04 Февраля, 2015 - 17:36:40
Гость
Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
запутали
читал, что максимальны размер куки 4кб, можно как то вычислить размер моего получаемого куки?
php же логическая штука?
Рассуждаю логически как учила училка по логике, использую конструкцию "Если, то". Правда пересдавал я логику раз 10.
Если 10 товаров в корзине нормально работают: удаляются, добавляются, изменяются, то код работоспособный. Если идет больше чем 10 товаров, то выскакивает ошибка о проблеме с заголовками. Уже не работоспособный.
В чем неработоспособность теоритически? Я как истинный нуб все пытаюсь обвинить куки. Может я превышаю допустимый размер куки и получаю ошибку? Или мой код настолько запутанный, что начинает замечать ошибку, когда операций становиться больше?
В чем смысл жизни? И как жить вечно?
esterio
Отправлено: 04 Февраля, 2015 - 18:11:01
Активный участник
Покинул форум
Сообщений всего: 5027
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
zapatronen пишет:
максимальны размер куки 4кб
уточню не одной куки а все вместе взятих. и их не точно 4Кб, а в каждом браузере по своему, но если их больше 4Кб гарантий не будет
у вас же ошибка в том что идет вывод до того как послана кука. значит чтото више пошло не так. весма вероятно тчо у вас включен вывод ошибок. ну или что-то другое
zapatronen
Отправлено: 04 Февраля, 2015 - 21:00:52
Гость
Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
вывод ошибок включен, как же без него. отключать его пробывал, но все равно кол-во товара не меняется в товарах под номерами 11 и далее
Бедин
Отправлено: 07 Мая, 2015 - 17:58:54
Новичок
Покинул форум
Сообщений всего: 0
Дата рег-ции: Май 2015
Помог: 0 раз(а)
При данной ошибке, мне не помогло ничего из перечисленного сдесь, так как.
На Windows-хостинге отправка почты с сайта реализуется через SMTP, php mail не фукционирует.
У меня было следующие в коде:
if(mail($address,$e_subject,$msg,$headers)) {
// Email has sent successfully, echo a success page.
//echo "OK";
header("Location: thanks.html");
} else {
echo '<div class="notification_error">'.$error.'</div>';
}
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.