Разработчику. Сборник рецептов PHP
Задавайте вопросы

Установка cookies

Вернуться назад

Задача

Необходимо установить cookie.

Решение

Это делается с помощью функции setcookie():

setcookie('flavor' , 'chocolate chip');

Обсуждение

Cookies посылаются вместе с HTTP-заголовками, поэтому функцию setcookie() необходимо вызывать до того, как сформирована выходная информация.

Для управления поведением cookies можно передать в функцию setcookie() дополнительные аргументы. Третий аргумент функции setcookie() – это время истечения срока действия в формате метки времени UNIX. Например, время действия следующего cookie истекает в полдень GMT 3 декабря 2004 года:

setcookie('flavor' ,'chocolate chip' ,1102075200);

Если третий аргумент функции setcookie() опущен (или пустой), то время действия cookie заканчивается в момент закрытия броузера. Следует иметь в виду, что многие системы не могут обрабатывать время истечения срока действия, превышающее 2 147 483 647, поскольку это наибольшее значение метки времени UNIX, которую может содержать 32-битное целое число.

Четвертым аргументом функции setcookie() является путь. Cookie посылается обратно серверу только в том случае, если путь к запрашиваемым страницам начинается с указанной в аргументе строки. Так, следующий cookie будет послан обратно на страницу, путь к которой начинается со строки /products/:

setcookie('flavor' , 'chocolate chip' , ' ' , '/products/');

Страница, которая устанавливает этот cookie, не обязана иметь URL, начинающийся со строки /products/, но следующий cookie будет послан обратно только на страницу, удовлетворяющую этому требованию. Пятый аргумент функции etcookie() – это домен. Cookie посылается обратно серверу только в том случае, если имя хоста, с которого запрашиваются страницы, заканчивается строкой с именем указанного домена. В следующем фрагменте кода первый cookie посылается обратно всем хостам, принадлежащим домену example.com, но второй cookie посылается только в запросах к хосту jeannie.example.com:

setcookie('flavor' , 'chocolate chip' , ' ', ' ' '.example.com');
setcookie('flavor' , 'chocolate chip' , ' ', ' ', 'jeannie.example.com');

Если бы домен первого cookie был только example.com, а не .example.com, то он был бы послан только одному хосту example.com (а не www.example.com или jeannie.example.com).

Последний необязательный аргумент setcookie() – это установленный в 1 флаг, который приказывает посылать cookie только посредством SSL-соединения. Это может оказаться полезным, если cookie содержит важную информацию, но помните, что на компьютере пользователя информация cookie хранится в открытом виде.

Различные броузеры обрабатывают cookies немного по-разному, особенно в зависимости от того, как строго они подходят к строкам пути и домена и как распределяют приоритеты между cookies с одинаковыми именами. Эти отличия хорошо разъясняются на странице помощи по функции setcookie() оперативного руководства.

См. также

Документацию по функции setcookie() на http://www.php.net/setcookie; расширенную спецификацию cookie, подробно изложенную в RFC 2965 на http://www.faqs.org/rfcs/rfc2965.html.

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования


Рейтинг Сайтов ДОСКИ.РУ