Куки-файлы - это текстовые файлы, хранящиеся на клиентском компьютере, и они сохраняются в целях отслеживания использования. PHP прозрачно поддерживает HTTP-файлы cookie.

Для идентификации возвращающихся пользователей предусмотрено три этапа:

  • Серверный скрипт отправляет набор файлов 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-16 22:03:38 GMT;
path=/; domain=example.com
Connection: close
Content-Type: text/html

Как вы можете видеть, заголовок Set-Cookie содержит пару значений имени, дату GMT, путь и домен. Имя и значение будут закодированы в 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);

Вот деталь всех аргументов -

  • Name - Это задает имя куки и хранится в переменной окружения называется HTTP_COOKIE_VARS. Эта переменная используется при доступе к файлам cookie.
  • Value - Это устанавливает значение указанной переменной и содержание , что вы на самом деле хотите сохранить.
  • Expiry - это определение будущего времени в секундах с 00:00:00 по Гринвичу 1 января 1970 года. По истечении этого времени cookie станет недоступным. Если этот параметр не установлен, cookie автоматически истекает, когда веб-браузер закрыт.
  • Path - Это определяет каталоги , для которых куки. Один символ прямой косой черты позволяет cookie быть действительным для всех каталогов.
  • Domain - Это может использоваться , чтобы указать имя домена в очень больших областях и должны содержать , по крайней мере , два периода , чтобы быть действительным. Все файлы cookie действительны только для хоста и домена, которые их создали.
  • Security - Это может быть установлено в 1, чтобы указать, что файл cookie должен быть отправлен только защищенной передачей с использованием HTTPS, в противном случае это значение равно 0, что означает, что cookie может быть отправлен посредством обычного 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"]. "
";
         /* is equivalent to */
         echo $HTTP_COOKIE_VARS["name"]. "
";
         echo $_COOKIE["age"] . "
";
         /* is equivalent to */
         echo $HTTP_COOKIE_VARS["name"] . "
";
      ?>
   </body>
</html>

Вы можете использовать функцию isset(), чтобы проверить, установлен ли файл cookie или нет.

<html>
   <head>
      <title>Accessing Cookies with PHP</title>
   </head>
   <body>
      <?php
         if( isset($_COOKIE["name"]))
            echo "Welcome " . $_COOKIE["name"] . "
";
         else
            echo "Sorry... Not recognized" . "
";
      ?>
   </body>
</html>

Удаление Cookie с помощью PHP

Официально, чтобы удалить cookie, вы должны вызвать setcookie() только с аргументом name, но это не всегда хорошо работает, и на него нельзя положиться. Безопаснее всего установить cookie с истекшей датой -

<?php
   setcookie( "name", "", time()- 60, "/","", 0);
   setcookie( "age", "", time()- 60, "/","", 0);
?>
<html>
   <head>
      <title>Deleting Cookies with PHP</title>
   </head>
   <body>
      <?php echo "Deleted Cookies" ?>
   </body>
</html>

 С уважением, авторы сайта Компьютерапия


Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!



Предыдущие статьи


Cookies make it easier for us to provide you with our services. With the usage of our services you permit us to use cookies.
Ok