Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Cannot send session cookie - headers already sent by ... [5]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (5): « 1 2 3 4 [5]   

> Без описания
Champion Супермодератор
Отправлено: 15 Декабря, 2009 - 11:17:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 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 и во многих текстовых редакторах есть эта возможность. Всё.
 
 Top
Balrog
Отправлено: 19 Января, 2015 - 14:22:46
Post Id



Новичок


Покинул форум
Сообщений всего: 0
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




Здраствуйте.
Возникла у меня описанная в этой теме ошибка.
Суть проблемы вот в чем. Есть у меня код (честно притыренный и переработанный под свои нужды Улыбка ). Сам по себе, он работает нормально (сессия начинается в начале страницы), хотя и не хочет отправлять сообщение с mail.ru (жалуется на неправильные заголовки). Но дело в том, что мне необходимо вставить его в сайт на основе wordpress и тут начинаются проблемы. Я пытаюсь вставить его как "страницу". Для возможности добавлять php код во встроенном текстовом редакторе, добавил в файл используемой "темы" functions.php следуйщие строки:
Спойлер (Отобразить)

Ошибки выбивает те же, что и у других:
Спойлер (Отобразить)

Насколько я понимаю - я делаю, в корне, неправильно, пытаясь впихнуть сессию как "страницу", так как вначале отсылаются заголовки из файла headers.php. Если же вставляю сессию и связанный с ней код в начало файла headers.php, все работает но "криво" - после отправки данных, меня переадресовывает на главную страницу, вместо того, чтобы остаться на текущей и выбить мне сообщение об отправке/ошибке. А когда перехожу на нужную страницу, то сообщения об отправке/ошибке - присутствует.
Так же, вычитал совет в настройках PHP выставить в output_buffering значение 4096, что приводит уже к другим ошибкам (видимо связано с превышением лимита буфера для заголовков).
Понимаю, что делать видимо пытаюсь неправильно, но в упор не знаю куда можно грамотно впихнуть код, чтобы он без проблем работал.
Заранее благодарен.
ПС: Я в программировании новичек и даже не могу назвать себя программистом. Поэтому, не пинайте сильно. Улыбка
 
 Top
zapatronen
Отправлено: 04 Февраля, 2015 - 15:54:43
Post Id



Гость


Покинул форум
Сообщений всего: 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?
Не понял Радость

ps то что код дэбила я уже знаю Улыбка

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require_once('connect.php');
  3. require_once('header.php');
  4. require_once('function/functions.php');
  5. foreach($basket as $tovar=>$value){
  6.           if( isset($_POST[$tovar])){
  7.           $value=$_POST[$tovar];
  8.           $basket[$tovar]=$value;
  9.           $basket2=base64_encode(serialize($basket));
  10.           setcookie('basket', $basket2, 0x7FFFFFFF);
  11. }
  12.       $query="SELECT * FROM beta WHERE article='".$tovar."'";
  13.       $data = mysqli_query($dbc, $query);
  14.       $row = mysqli_fetch_array($data);
  15.       $image=translit($row['name']);
  16.          $filename="image/$tovar";
  17.          if(file_exists($filename)){
  18.          $imagename="image/$tovar/$image.jpg";
  19.          }
  20. ?>
  21. <section>
  22. <form method="post" action="cart.php">
  23. <IMG style="width:50px;"src="<?=$imagename?>">
  24. <a href="product.php?article=<?=$tovar?>"><?=$row['name']?></a>
  25. <a href="deletefromcart.php?article=<?=$tovar;?>">удалить</a>
  26. <input name="<?=$tovar?>"type="number"min="1"max="100"step="1"value="<?=$value;?>">
  27. <input type="submit" name="submit" value="перерасчитать">
  28. </form>
  29. </section>
  30. <?
  31. }
  32. ?>



пожалуйста подтолкните на путь истинный
 
 Top
LIME
Отправлено: 04 Февраля, 2015 - 16:02:46
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Оой
Ну куда от тебя деваться
Конкретно тебе проще всего будет просто включить кеширование вывода
Справишься?
Погугли
 
 Top
zapatronen
Отправлено: 04 Февраля, 2015 - 16:41:04
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




))

сделал, ошибка пропала, но, чтобы увидеть обновления такие как : товар удален, товар добавлен и изменение кол-ва товара не отображаются пока не удалю кеш файл Огорчение

может откинуть куки и перейти на сессии? или таже херня будет?
(Добавление)
или можно как то создавать новый файл-кеш при обновлении страницы
 
 Top
esterio
Отправлено: 04 Февраля, 2015 - 16:43:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




zapatronen
сессии работают на куках
 
 Top
zapatronen
Отправлено: 04 Февраля, 2015 - 16:49:55
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




то есть проблема останется?
(Добавление)
ааа то есть соединить куки и сессии Радость
 
 Top
LIME
Отправлено: 04 Февраля, 2015 - 17:09:14
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




даааа
конечно
пс: просто интересно какой зверь получится
 
 Top
zapatronen
Отправлено: 04 Февраля, 2015 - 17:36:40
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




запутали
читал, что максимальны размер куки 4кб, можно как то вычислить размер моего получаемого куки?

php же логическая штука?

Рассуждаю логически как учила училка по логике, использую конструкцию "Если, то". Правда пересдавал я логику раз 10. Улыбка


Если 10 товаров в корзине нормально работают: удаляются, добавляются, изменяются, то код работоспособный.
Если идет больше чем 10 товаров, то выскакивает ошибка о проблеме с заголовками. Уже не работоспособный.

В чем неработоспособность теоритически? Я как истинный нуб все пытаюсь обвинить куки. Может я превышаю допустимый размер куки и получаю ошибку? Или мой код настолько запутанный, что начинает замечать ошибку, когда операций становиться больше?
В чем смысл жизни? И как жить вечно? ??? Непонял! В затруднении Что такое?
 
 Top
esterio
Отправлено: 04 Февраля, 2015 - 18:11:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




zapatronen пишет:
максимальны размер куки 4кб

уточню не одной куки а все вместе взятих. и их не точно 4Кб, а в каждом браузере по своему, но если их больше 4Кб гарантий не будет
у вас же ошибка в том что идет вывод до того как послана кука. значит чтото више пошло не так. весма вероятно тчо у вас включен вывод ошибок. ну или что-то другое
 
 Top
zapatronen
Отправлено: 04 Февраля, 2015 - 21:00:52
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




вывод ошибок включен, как же без него. отключать его пробывал, но все равно кол-во товара не меняется в товарах под номерами 11 и далее
 
 Top
Бедин
Отправлено: 07 Мая, 2015 - 17:58:54
Post Id


Новичок


Покинул форум
Сообщений всего: 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>';
}

Решения нашел тут:
https://masterhost[dot]ru/support/do[dot][dot][dot]ndows/smtp-auth/

Но говорю сразу, прийдется помудрить, но потом все будет работать.
Удачи.

(Отредактировано автором: 07 Мая, 2015 - 18:00:48)

 
 Top
Страниц (5): « 1 2 3 4 [5]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB