cookie

Cookie — введение

Cookie имеют свою спецификацию. Они не описаны в протоколе HTTP. Там описаны только заголовки, в которых посылаются cookie.

История cookie начинается с существования компании Netscape Communications (NC), которая выпускала браузер Netscape Navigator. Тогда возникла проблема: протокол HTTP имеет недостаток, он — протокол без состояния. Когда данные приходят на сервер, сервер о нас ничего не помнит. Сервер получил что-то — ответил. Потом мы посылаем новый запрос, а мы для него новый человек. Он про нас забыл, как только ответил.

Поэтому возникла необходимость сохранять промежуточные данные (типа имени пользователя). И компания NC пишет первую спецификацию cookie. В первой спецификации было наложено ограничение на размер cookie в 4kb; с одного домена принималось ограниченное количество cookie.

cookie

См. картинку выше. Мы говорим серверу, чтобы сервер сказал браузеру, чтобы тот поставил пользователю Васе cookie. Cookie — это строка вида ‘имя=значение’. Хранят cookie все браузеры по-разному. В следующий раз, когда пользователь зайдет на сайт, проверяется наличие cookie в браузере, если есть — посылается заголовком на сервер.

Для работы с cookie в PHP написана функция setcookie.

setcookie (name [, value [,expire [, path [, domain[, secure]]]]])

Параметры по порядку:

  • Имя куки. Только латинские буквы, цифры, символ подчеркивания и дефис. Все другие символы будут преобразованы в символ подчеркивания.
  • Значение параметра.
  • Дата истечения срока годности.
  • Путь, который определяет, в какой части домена может использоваться данный файл cookie.
  • Домен, который получит cookie.
  • Указание, что данные cookie должны передаваться только через безопасное соединение HTTPS.

Cookie бывают временные (сессионные) и постоянные. Сессия — это то время, пока открыт браузер пользователя. Как правило, такие cookie браузеры никуда не сохраняют, а хранят в памяти; браузер закрывается — cookie удаляются. Постоянные сookie — для них указывается параметр ‘expire’ — срок годности. Не рекомендуется передавать пароль в cookie. Пример создания cookie:

setcookie ("TestCookie", // имя cookie
$value, // значение cookie
time()+3600, // время жизни в секундах
"/docs/", // где использовать cookie
".site.com", // на каком домене применить cookie
1); // использовать HTTPS

Cookie посылаются в заголовках при общении клиент-сервер. Cookie должны идти перед выводом контента. В коде во вне php-кода выводом считается все, что угодно, даже пустая строка. Поэтому cookie должны быть в начале кода.




Добавить комментарий

Ваш e-mail не будет опубликован.