FoxWeb

софт для студентов
Искать здесь

Основы протокола HTTP: работаем с cookie

Раздел: PHP, MySQL, веб-программирование Автор: foxweb
E-mail: спаму - нет! Www: http://foxweb.net.ru
Просмотров: 1876 Дата: 13.02.2007
Куки используют в случаях, когда нужно сохранить небольшой фрагмент данных на компьютере пользователя. Эту информацию можно записывать и считывать с помощью PHP-скриптов.

Что такое cookies?

Куки (от англ. cookies — домашнее печенье) — небольшой фрагмент служебной информации, помещаемый веб-сервером на компьютер пользователя. Применяется для сохранения данных, специфичных для данного пользователя, и используемых веб-сервером для различных целей, в числе которых:

  • в системах с удаленным доступом — пароль, порождаемый сервером при первом подключении и отсылаемый пользователю; при последующих подключениях пользователь должен предоставлять серверу этот пароль;
  • отслеживание состояния сессии.

Про куки начинающие программисты, да и простые пользователи думают, что это вирус, троян, червь, что они остаются в компьютере пользователя и следят за ним... Наверное, вы будете смеяться, но при помощи куков невозможно ничего испортить, удалить, украсть и передать. Они никак не мешают вашей безопасности и не несут в себе ничего, кроме пары десятков байт совершенно безобидной информации. Знали бы вы, сколько гадости приходит в ваш компьютер не через HTTP...

Cookie на стороне сервера

Куки — это ни что иное, как одно из служебных полей заголовка HTTP-протокола. Чтобы установить куки в браузере пользователя, веб-сервер передаёт заголовок формата:

Set-Cookie: name=value; expires=date; path=path; domain=domain_name; secure

  • name — имя и значение куки, например mycookie=2007-02-13;
  • expires — срок действия;
  • path — путь на сайте, где начинает действовать куки;
  • domain — домен, при входе на который начинает дествовать куки;
  • secure — бит безопасности.

В PHP есть встроенные функции для работы с HTTP-заголовками и конкретно с куками.

Первый способ — напрямую передать нужный куки с помощью функции header():

header("Set-Cookie: name=value; expires=date; path=path; domain=domain_name; secure");

Обратите внимание, что в протоколе HTTP сначала должны передаваться заголовки, а потом блок данных. Поэтому функция header() должна вызываться строго до начала любого вывода.

Второй способ — по своему механизму ничем не отличается от первого, но выглядит более удобным. Это функция setcookie(). Формат функции такой:

bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure [, bool httponly]]]]]] )

  • name — имя куки;
  • value — значение куки;
  • expire — срок действия куки. time()+60*60*24*30 даёт 30 дней с момента установки, если время не указано, куки действует до закрытия браузера;
  • path — путь действия куки;
  • domain — домен действия куки;
  • secure — бит безопасности;
  • httponly — если true, то куки доступно только через HTTP (запрещает доступ из JavaScript и другими способами), добавлено в PHP 5.2.0.

<?php
$value 
'mydata';

setcookie("TestCookie"$value);
setcookie("TestCookie"$valuetime()+3600);  /* срок действия 1 час */
setcookie("TestCookie"$valuetime()+3600"/~test/"".example.com"1);
?>

Поскольку установка куки — это передача HTTP-заголовка, данную функцию следует вызывать до начала любого вывода в скрипте. Обязательно указывать только имя куки. Чтобы очистить установленный ранее куки, нужно установить пустое значение $value.

Cookie на стороне браузера

При GET- или POST-запросе некой веб-странички (а также любого другого файла), браузер ищет в своем хранилище куки, которые были выставлены этим доменом и помещает их в заголовок запроса. Браузер отсылает cookie серверу в следующем виде:

Cookie: TestCooke=mydata;

Если куков было установлено несколько, все значения должны быть разделены символами: "; " переданные браузером куки сразу становятся доступными в PHP-скрипте через глобальные массивы $_COOKIE и $HTTP_COOKIE_VARS. Вот пример чтения cookie:

<?php
// выводит один известный cookie
echo $_COOKIE["TestCookie"];
echo 
$HTTP_COOKIE_VARS["TestCookie"];

// выводит все доступные куки
print_r($_COOKIE);
?>

Ну вот мы с вами и научились записывать и читать cookie.

Полезные ссылки

Комментарии

Lex 20.11.2007 10:42:07 #
Отлично!

Оставить комментарий

Ваше имя

Ваш комментарий

Код   Защитный код. Если вы не видите здесь рисунок - обновите страницу.
Оценка   

Заметки по этой теме