В данной заметке коротко о том, что такое cookies (куки). Их создание, чтение и удаление.

Навигация по статье:

Cookies - это механизм хранения данных браузером удаленной машины для отслеживания или идентификации возвращающихся посетителей.

PHP предоставляет для установки файла cookie функцию setcookie(). Для этой функции требуется до шести аргументов (параметров), и она должна вызываться до тега html. Для каждого файла cookie эту функцию нужно вызывать отдельно.

setcookie(name, value, expire, path, domain, security);

// Создание временной cookie
setcookie("name", "John");
// Создание долговременной cookie на один час
setcookie("name", "John", time()+3600);
// Cookie доступны один час по пути /docs/
setcookie("name", "John", time()+3600, "/docs/");
// Cookie доступны один час по пути для всех поддоменов
setcookie("name", "John", time()+3600, "/", ".example.com");
// Сookie можно отдавать только при https
setcookie("name", "John", time()+3600, "/", ".example.com", true);
// Сookie можно отдавать только при http запросе
setcookie("name", "John", time()+3600, "/", ".example.com", false, true);

Ниже следует список аргументов (параметров) setcookie() и их описание:

name — устанавливает имя файла cookie и хранится в переменной среды с именем HTTP_COOKIE_VARS. Эта переменная используется для доступа к файлам cookie.

value — устанавливает значение именованной переменной и представляет собой контент, который вы действительно хотите сохранить.

expiry — определяет время хранения cookie в секундах с 00:00:00 по Гринвичу 1 января 1970 года. По истечении этого времени cookie станет недоступным. Файлы cookie удаляются после закрытия браузера.

path — Указывает каталоги, для которых действителен файл cookie. Одиночный символ прямой косой черты задает, что файл cookie является действительным для всех каталогов.

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

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

Чтение сookie

PHP предоставляет множество способов доступа к файлам cookie. Самый простой из них — использовать переменные $_COOKIE или $HTTP_COOKIE_VARS. Чаще используется именно глобальная переменная $_COOKIE.

// Чтение cookie
echo $_COOKIE["name"];

// Или
echo $HTTP_COOKIE_VARS["name"];
// Удаление cookie
setcookie("name", "John", time()-3600);
// Массивы и cookie
$user = [
  'name'=> 'John',
  'login'=> 'root',
  'password'=> '1234'
];

$str = serialize($user);
setcookie("user", $str);

$user = unserialize($_COOKIE["user"]);
print_r($user);

// Для сохранения целостности
$str = base64_encode( serialize($user) );
setcookie("user", $str);

$user = unserialize( base64_decode($_COOKIE["user"]) );
print_r($user);