Куки-файлы - это текстовые файлы, хранящиеся на клиентском компьютере, и они сохраняются в целях отслеживания использования. 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>

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


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


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


We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.

Ok