Куки-файлы — это текстовые файлы, хранящиеся на клиентском компьютере и предназначенные для отслеживания использования. PHP прозрачно поддерживает HTTP-куки.
Есть три шага, вовлеченных в идентификацию возвращающихся пользователей —
-
Серверный скрипт отправляет набор файлов cookie в браузер. Например, имя, возраст или идентификационный номер и т. Д.
-
Браузер хранит эту информацию на локальном компьютере для дальнейшего использования.
-
Когда в следующий раз браузер отправляет какой-либо запрос на веб-сервер, он отправляет информацию о файлах cookie на сервер, и сервер использует эту информацию для идентификации пользователя.
Серверный скрипт отправляет набор файлов cookie в браузер. Например, имя, возраст или идентификационный номер и т. Д.
Браузер хранит эту информацию на локальном компьютере для дальнейшего использования.
Когда в следующий раз браузер отправляет какой-либо запрос на веб-сервер, он отправляет информацию о файлах cookie на сервер, и сервер использует эту информацию для идентификации пользователя.
Эта глава научит вас, как устанавливать куки, как получить к ним доступ и как их удалить.
Анатомия Печенья
Файлы cookie обычно устанавливаются в заголовке HTTP (хотя JavaScript также может устанавливать файлы cookie непосредственно в браузере). PHP-скрипт, который устанавливает cookie, может отправлять заголовки, которые выглядят примерно так:
HTTP/1.1 200 OK Date: Fri, 04 Feb 2000 21:03:38 GMT Server: Apache/1.3.9 (UNIX) PHP/4.0b3 Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; path=/; domain=tutorialspoint.com Connection: close Content-Type: text/html
Как видите, заголовок Set-Cookie содержит пару имя-значение, дату по Гринвичу, путь и домен. Имя и значение будут закодированы в URL. Поле expires — это инструкция для браузера «забыть» cookie после заданного времени и даты.
Если браузер настроен для хранения файлов cookie, он будет хранить эту информацию до истечения срока действия. Если пользователь указывает браузеру на любую страницу, которая соответствует пути и домену файла cookie, он будет повторно отправлять файл cookie на сервер. Заголовки браузера могут выглядеть примерно так:
GET / HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc) Host: zink.demon.co.uk:1126 Accept: image/gif, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Cookie: name=xyz
Затем скрипт PHP будет иметь доступ к cookie в переменных среды $ _COOKIE или $ HTTP_COOKIE_VARS [], в которых хранятся все имена и значения cookie. К указанному выше файлу cookie можно получить доступ с помощью $ HTTP_COOKIE_VARS [«name»].
Настройка файлов cookie с помощью PHP
PHP предоставил функцию setcookie () для установки cookie. Эта функция требует до шести аргументов и должна вызываться перед тегом <html>. Для каждого файла cookie эта функция должна вызываться отдельно.
setcookie(name, value, expire, path, domain, security);
Вот деталь всех аргументов —
-
Имя — устанавливает имя файла cookie и хранится в переменной среды с именем HTTP_COOKIE_VARS. Эта переменная используется при доступе к файлам cookie.
-
Значение — устанавливает значение именованной переменной и является содержимым, которое вы на самом деле хотите сохранить.
-
Срок действия — это указывает будущее время в секундах с 00:00:00 по Гринвичу 1 января 1970 года. По истечении этого времени файл cookie станет недоступным. Если этот параметр не задан, срок действия файла cookie автоматически истекает при закрытии веб-браузера.
-
Путь — указывает каталоги, для которых cookie действителен. Один символ прямой косой черты позволяет куки-файлам быть действительными для всех каталогов.
-
Домен — это может использоваться для указания имени домена в очень больших доменах и должно содержать как минимум два периода, чтобы быть действительным. Все куки действительны только для хоста и домена, который их создал.
-
Безопасность — это может быть установлено в 1, чтобы указать, что куки должны отправляться только с помощью безопасной передачи с использованием HTTPS, в противном случае установлено значение 0, что означает, что куки могут быть отправлены по обычному HTTP.
Имя — устанавливает имя файла cookie и хранится в переменной среды с именем HTTP_COOKIE_VARS. Эта переменная используется при доступе к файлам cookie.
Значение — устанавливает значение именованной переменной и является содержимым, которое вы на самом деле хотите сохранить.
Срок действия — это указывает будущее время в секундах с 00:00:00 по Гринвичу 1 января 1970 года. По истечении этого времени файл cookie станет недоступным. Если этот параметр не задан, срок действия файла cookie автоматически истекает при закрытии веб-браузера.
Путь — указывает каталоги, для которых cookie действителен. Один символ прямой косой черты позволяет куки-файлам быть действительными для всех каталогов.
Домен — это может использоваться для указания имени домена в очень больших доменах и должно содержать как минимум два периода, чтобы быть действительным. Все куки действительны только для хоста и домена, который их создал.
Безопасность — это может быть установлено в 1, чтобы указать, что куки должны отправляться только с помощью безопасной передачи с использованием HTTPS, в противном случае установлено значение 0, что означает, что куки могут быть отправлены по обычному HTTP.
В следующем примере будут созданы два файла cookie, имя и возраст этих файлов cookie истекает через час.
<?php setcookie("name", "John Watkin", time()+3600, "/","", 0); setcookie("age", "36", time()+3600, "/", "", 0); ?> <html> <head> <title>Setting Cookies with PHP</title> </head> <body> <?php echo "Set Cookies"?> </body> </html>
Доступ к файлам cookie с помощью PHP
PHP предоставляет множество способов доступа к файлам cookie. Самый простой способ — использовать переменные $ _COOKIE или $ HTTP_COOKIE_VARS. В следующем примере будут доступны все файлы cookie, установленные в приведенном выше примере.
<html> <head> <title>Accessing Cookies with PHP</title> </head> <body> <?php echo $_COOKIE["name"]. "<br />"; /* is equivalent to */ echo $HTTP_COOKIE_VARS["name"]. "<br />"; echo $_COOKIE["age"] . "<br />"; /* is equivalent to */ echo $HTTP_COOKIE_VARS["age"] . "<br />"; ?> </body> </html>
Вы можете использовать функцию isset (), чтобы проверить, установлен cookie или нет.
<html> <head> <title>Accessing Cookies with PHP</title> </head> <body> <?php if( isset($_COOKIE["name"])) echo "Welcome " . $_COOKIE["name"] . "<br />"; else echo "Sorry... Not recognized" . "<br />"; ?> </body> </html>
Удаление Cookie с помощью PHP
Официально, чтобы удалить cookie, вы должны вызвать setcookie () только с аргументом name, но это не всегда работает хорошо, и на него нельзя полагаться.
Безопаснее всего установить cookie с датой, которая уже истекла —