Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему отсылаются cookie? 
V
    Опции темы
wood
Дата 17.11.2014, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 1.5.2006

Репутация: нет
Всего: нет



Всем добый день.
начал изучать РНР, пытался разобраться с куками. В хелпе и в книгах написано,  что куки отправляются до первого вывода в барузер. Решил проверить на ошибку и отправить после вывода, и браузер не выдал ошибки куки отправились, после обновления страницы появились в массиве. Подскажите почему это происходит?
вот код:
Код

<? 
echo "hello, user";
setcookie("user", "root");
print_r($_COOKIE);
?>

результат:
hello, user
Array
([user] => root)


Это сообщение отредактировал(а) wood - 18.11.2014, 20:28
PM MAIL   Вверх
Aliance
Дата 18.11.2014, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Видимо потому, что стоит подавление вывода ошибок. Попробуйте включить её, написав в самом начале скрипта:
Код

error_reporting(E_ALL)

Вообще должно быть что-то типа
Цитата

PHP Warning:  Cannot modify header information - headers already sent by

А т.к. это варнинг, то код отработает.
PM MAIL WWW ICQ Skype   Вверх
baldina
Дата 18.11.2014, 10:43 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Цитата(wood @  17.11.2014,  21:15 Найти цитируемый пост)
после обновления страницы появились в массве

но не у клиента
PM MAIL   Вверх
wood
Дата 18.11.2014, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 1.5.2006

Репутация: нет
Всего: нет



Цитата(baldina @  18.11.2014,  10:43 Найти цитируемый пост)
но не у клиента
 ???

Можно по-подробнее. 
Я отсылаю на сервер, после обновления сервер возвращает назад, если поставить счетчик то он будет увеличиваться. Если бы клиентом не получалось бы ничего или не отправлялось, счетчик не увеличивался. Или я что-то не так понимаю?

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

PM MAIL   Вверх
baldina
Дата 18.11.2014, 12:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



у php есть внутренний буфер. пока ваш вывод короткий, буфер не заполнен и не отправляется пользователю сразу, и вы "успеваете" установить куки. т.е. это случайность, связанная с длиной вывода. сделайте вывод длиннее, или вставье перед setcookie() вызов flush(), и ваш счетчик перестанет увеличиваться, т.к. к этому моменту заголовки будут действительно отправлены. правда, и $_COOKIE не заполнится, тут я ошибся
PM MAIL   Вверх
wood
Дата 18.11.2014, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 1.5.2006

Репутация: нет
Всего: нет



Проблема в том, что пример который я разбирал (включая help), в нем короткий код, только setcookie, но ставится пустая строка перед "<?" и все, тут же warning, я уже не говорю про echo. у меня же код отрабатывается в любом случае. И причину никак найти не могу((. 
И насколько я понял, заголовки отправляются в браузер до отправки самого контента, так что наверное про переполнение буфера говорить еще рано.

PM MAIL   Вверх
baldina
Дата 18.11.2014, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



заголовки и тело ответа - один сплошной текст. упрощенно, добавление заголовков суть приписывание текста в начало ответа, echo - в конец. как только буфер заполнен, он сбрасывается.
то, что происходит до <?php, не важно, т.к. интерпретатором php обрабатывается все, а не только внутри этих тегов
почитайте http://php.net/manual/ru/outcontrol.configuration.php
и посмотрите что в ваших настройках

Добавлено через 4 минуты и 48 секунд
Цитата(wood @  18.11.2014,  15:01 Найти цитируемый пост)
причину никак найти не могу

причину чего? правильно - устанавливать заголовки до всяких echo и print, либо использовать буферизацию ob_start()/ob_end_flush()
или вас интересует вопрос "я все делаю неправильно, но оно все равно работает"?
PM MAIL   Вверх
wood
Дата 18.11.2014, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 1.5.2006

Репутация: нет
Всего: нет



Спасибо большое!!!!
Все заработало!!! Точнее не заработало!!!))
Действительно ошибки не сыпались из-за буфера, убрал буфер (сначала отправил flush, а затем изменил в ini ), появились ошибки.
А можно уточнить?: получается при буфере рhр успевал размесить (в моем случае вставить) куки в заголовок где они и должны быть?, так как основной контент уже echo-ом начинал формироваться.
И вопрос по буферу? его лучше отключить или использовать, а если использовать то размер как по умолчанию 4096?
Еще раз спасибо! 
PM MAIL   Вверх
sQu1rr
Дата 18.11.2014, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 2
Всего: 13



Цитата(wood @  18.11.2014,  16:23 Найти цитируемый пост)
получается при буфере рhр успевал размесить (в моем случае вставить) куки в заголовок где они и должны быть?

Да-с

Цитата(wood @  18.11.2014,  16:23 Найти цитируемый пост)
его лучше отключить или использовать

Использовать

Цитата(wood @  18.11.2014,  16:23 Найти цитируемый пост)
а если использовать то размер как по умолчанию 4096?

Зависит от того для чего вы используете сервер. Если для себя, то все равно, зоть на всю оперативную память ставьте. А на сервере, нужно просчитать так что бы хватило всем пользователям при одновременных запросах.
PM MAIL Skype GTalk   Вверх
wood
Дата 18.11.2014, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 1.5.2006

Репутация: нет
Всего: нет



Все вопросы сняты!
Всем спасибо!, 
тему можно закрывать.
PM MAIL   Вверх
Aliance
Дата 19.11.2014, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Цитата(wood @  18.11.2014,  21:17 Найти цитируемый пост)
тему можно закрывать. 

темы тут редко закрываются, но если вы получили ответ на свой вопрос - принято нажимать на ссылку "Пометить как решённый" в верхнем правом углу темы.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0504 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.