Шаблоны проектирования PHP

Шаблоны проектирования PHP
PHP — файлы cookie

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

Идентификация вернувшихся пользователей состоит из трех этапов:

  • Серверный скрипт отправляет в браузер набор файлов 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. Поле истекает — это инструкция браузеру «забыть» файл 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. Одиночный символ косой черты позволяет файлу cookie быть действительным для всех каталогов.

  • Домен — может использоваться для указания имени домена в очень больших доменах и должен содержать как минимум две точки, чтобы быть действительным. Все файлы cookie действительны только для хоста и домена, которые их создали.

  • Безопасность — это может быть установлено в 1, чтобы указать, что файл cookie должен отправляться только путем безопасной передачи с использованием HTTPS, в противном случае установлено значение 0, что означает, что cookie может быть отправлен по обычному протоколу HTTP.

В следующем примере будут созданы два файла 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 () только с аргументом имени, но это не всегда работает хорошо, и на него не следует полагаться.

Безопаснее всего установить 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>
Выберите поля, которые будут показаны. Прочие будут скрыты. Перктаскивайте мышкой для изменения порядка полей.
  • Изображение
  • SKU
  • Рейтинг
  • Цена
  • Запасы
  • Доступность
  • В корзину
  • Описание
  • Содержимое
  • Вес
  • Размеры
  • Дополнительная информация
  • Атрибуты
  • Custom attributes
  • Настраиваемые поля
Сравнить
Список желаний 0
Открыть страницу желаний Продолжить покупки