Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740

При установке cookie ошибка headers already sent

05.06.2016, 02:20. Показов 2083. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем.

Начал изучать куки, и решил попробовать написать счетчик посещений страницы.

Написал вот как:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html>
 
   <head>
      <meta charset="utf-8">
      <title>Работа с Cookie</title>
   </head>
 
<body bgcolor="#A9F5F2">
   <h1 align="center">Добро пожаловать! Демонстрирую вам счетчик обновления данной страницы.</h1>
   
   <?php
      if(isset($_COOKIE['Update']))
         $counter = ($_COOKIE['Update'] + 1);
      else
         $counter = 0;
 
      setcookie("Update", $counter);
 
      echo "<h3>Вы посетили данную страницу <b>".$_COOKIE['Update']."</b> раз</h3>";
   ?>
</body>
 
</html>
Мне выдает вот такое(см. изображение). Что я не так делаю?
Миниатюры
При установке cookie ошибка headers already sent  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.06.2016, 02:20
Ответы с готовыми решениями:

Ошибка - Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent
Добрый день!!! Хочу реализовать регистрацию и авторизацию пользователей. Вроде все правильно делаю. Не могу понять из-за чего ошибка...

Cannot send session cookie - headers already sent
Warning: session_start() : Cannot send session cookie - headers already sent by (output started at C:\site\java\index.php:1) in...

Cookie и Denwer - Cannot modify header information - headers already sent
Люди почему в denwer не ставятся cookie? например если выполнить этот код (setCookie('login', $login, time() + (60*60*24*30))) то вылазит...

11
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.06.2016, 02:26
Да чтож никто не видит
Что означает предупреждение "headers already sent"
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
05.06.2016, 02:29  [ТС]
Вроде судя по предупреждению проблема с заголовками. То есть, нельзя писать <head>...</head>, когда используешь куки? Как и при рисовании с помощью пхп. Просто чистый пхп скрипт должен быть?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.06.2016, 02:31
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
То есть, нельзя писать <head>...</head>, когда используешь куки?
Писать можно, но в определенном месте, и не только <head></head> но и любые другие символы
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
05.06.2016, 02:32  [ТС]
Jewbacabra, Я понял, при использовании куки тоже должен быть просто пхп скрипт. Но а если мне нужно еще оформить эту страницу?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.06.2016, 02:37
Что означает термин
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
просто пхп скрипт
???
Сначала устанавливаем куки, потом выводим данные.
0
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
05.06.2016, 02:44  [ТС]
Jewbacabra, Просто недавно я пробовал рисовать с помощью пхп. И у меня не было никакого оформления страницы, просто один пхп скрипт:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php     
   function drawSea($image, $blue_color){
      for($x = 225;$x <= 1425;$x += 40)
         imagefilledellipse($image, $x, 700, 40, 40, $blue_color);
   }
   
   function drawShip($image, $brown_color){
       $points = array(400, 680, 300, 580, 1350, 580, 1250, 680);
       imagefilledpolygon($image, $points, 4, $brown_color);
   }
   
   function drawFlag($image, $black_color, $red_color){
       imageline($image, 850, 580, 850, 80, $black_color);
       
       $points = array(850, 80, 1020, 80, 915, 135, 1020, 185, 850, 185);
       imagefilledpolygon($image, $points, 5, $red_color);
   }
   
   function drawSun($image, $yellow_color){
       imagefilledellipse($image, 1300, 100, 150, 150, $yellow_color);
   }
 
   $image = imagecreatetruecolor(1650, 900);
   $font = imagecolorallocate($image, 105, 230, 239);
   imagefill($image, 0, 0, $font);
      
   $blue_color = imagecolorallocate($image, 0, 0, 255);
   $yellow_color = imagecolorallocate($image, 250, 247, 131);
   $brown_color = imagecolorallocate($image, 191, 96, 0);
   $red_color = imagecolorallocate($image, 255, 0, 0);
   $black_color = imagecolorallocate($image, 0, 0, 0);
   $white_color = imagecolorallocate($image, 255, 255, 255);
   
   drawSea($image, $blue_color);
   drawShip($image, $brown_color);
   drawFlag($image, $black_color, $red_color);
   drawSun($image, $yellow_color);
   
   header("Content-type: image/png; charset=utf-8");
   
   imagepng($image);
   imagedestroy($image);
?>
Так как была такая же ошибка, если я до скрипта писал <head>...</head>, а точнее, как я понял, <meta charset="UTF-8">.
Так и здесь, я так понял.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.06.2016, 02:52
Лучший ответ Сообщение было отмечено Sh@dow777 как решение

Решение

Sh@dow777, понял про что ты. Тут несколько другая причина.
В случае генерации изображения ты указываешь браузеру как полученные данные интерпретировать:
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
header("Content-type: image/png; charset=utf-8"/* зачем? */);
И браузер будет пытаться вывести их как png. Вот только кодировка зачем, это же бинарный формат?? Соответственно если что-то еще добавить, то это будет уже не png. Тоже самое будет, если взять изображение, открыть его текстовым редактором, вписать туда произвольный текст, сохранить и попытаться его просмотреть. В этом случае просмотреть его уже не удастся.
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
<head>...</head>, а точнее, как я понял, <meta charset="UTF-8">.
нет. Нельзя выводить вообще ЛЮБЫЕ символы.

В случае с куками ситуация другая. Сначала должны идти заголовки, потом тело ответа.
PHP
1
2
<?php setcookie(...); ?>
Тут может быть что угодно, но заголовки уже отправить не получится
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
05.06.2016, 04:59  [ТС]
Jewbacabra, Вот смотрите, я удалил все, и оставил только скрипт:
PHP
1
2
3
4
5
6
7
8
9
10
<?php
   if(isset($_COOKIE['Update']))
      $counter = $_COOKIE['Update'] + 1;
   else
      $counter = 0;
 
   setcookie("Update", $counter);
 
   echo "<h3>Вы посетили данную страницу <b>".$_COOKIE['Update']."</b> раз</h3>";
?>
Все равно выдает ошибку. Скорее всего, я просто не врубаюсь, как надо правильно.

Добавлено через 1 минуту
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Вот только кодировка зачем, это же бинарный формат??
Про кодировку понял, спасибо за замечание.

Добавлено через 56 минут
Jewbacabra, Попробовал сейчас написать счетчик обновлений страницы с помощью сессий. Тоже написал всего один скрипт без всякого оформления страницы:
PHP
1
2
3
4
5
6
7
8
9
10
<?php
   session_start();
 
   if(!isset($_SESSION['counter']))
      $_SESSION['counter'] = 0;
   else
      $_SESSION['counter']++;
 
   echo "<h3>Вы обновили данную страницу <b>".$_SESSION['counter']."</b> раз</h3>";
?>
Снова выдает ту же ошибку
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
05.06.2016, 06:34
Sh@dow777, кодировку скрипта utf8 без BOM сделали?
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
06.06.2016, 00:17  [ТС]
Jodah, Вот сейчас сделал. В Notepad++ написал. А сначала писал в блокноте.
Теперь ошибки нет, но вместо русского текста пишутся кракозябры(см. изображение).
Миниатюры
При установке cookie ошибка headers already sent  
0
Web Programmer
 Аватар для JimUSA
325 / 286 / 121
Регистрация: 28.09.2011
Сообщений: 1,570
06.06.2016, 01:04
Sh@dow777, Добавьте выше
PHP
1
header("Content-Type: text/html; charset=utf-8");
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.06.2016, 01:04
Помогаю со студенческими работами здесь

Warning: cannot send session cookie - headers already start
написал вот такой код: &lt;html&gt; &lt;head&gt; &lt;title&gt;Sessions&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;Try start session&lt;/h1&gt; ...

Выдаёт сообщение сервер: Warning: Cannot send session cookie - headers already sent by
Warning: Cannot send session cookie - headers already sent by (output started at /home/test16/test16.mirotel.net/index.php:7) in...

При установке Windows XP ошибка error loading operation system а при установке Windows 7 код ошибки 0x0000007b
Доброго времени суток.Принесли со словами переустанови - полез и вот уже 3 день идет дело в том что при переустановке OC Windwos XP после...

Ошибка headers already sent при попытке запросить логин пароль
Запрос делаю так &lt;?php include (&quot;lock.php&quot;); ?&gt; Дальше идет тело страницы Файл lock.php такой: &lt;?php ...

Ошибка при авторизации Warning: Cannot modify header information - headers already sent
Здравствуйте. Помогите разобраться с авторизацией на сайте. Ругается на 19 строку. Echo до нее вроде нет. Из-за чего конфликтует? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru