Почему SetCookie должен вызываться в начале ответа HTTP? - PullRequest
1 голос
/ 10 июля 2010

, читая о файлах cookie, я обнаружил, что мне трудно понять следующее утверждение
"setcookie() должен вызываться перед любым выводом ответа HTTP. Основная причина в том, что PHP не буферизует ответ HTTP", помогите мнеистолковать это просто

Ответы [ 2 ]

5 голосов
/ 10 июля 2010

Чтобы понять это утверждение, вам нужно знать несколько вещей:

  1. HTTP-ответы состоят из двух частей: набора «заголовков» (пар ключ-значение) и затем «тела», которое является фактическими данными, например, веб-страница или изображение.
  2. HTTP-заголовки должны отправляться первыми, и как только один байт "тела" будет отправлен, клиент не будет обрабатывать больше заголовков.
  3. Файлы cookie, помимо прочего, отправляются клиенту в виде заголовков HTTP.

Итак, это говорит о том, что, если вы не сделаете что-то особенное, в тот момент, когда вы что-то эхом или у вас есть какие-либо данные вне блока <?...?>, PHP начнет тело ответа с этих данных. После этого больше отправлять заголовки, включая заголовки настроек cookie, нельзя.

2 голосов
/ 10 июля 2010

Это просто означает, что вам нужно убедиться, что все заголовки (файлы cookie устанавливаются через заголовки HTTP) выводятся до вывода любого HTML-кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...