В данной заметке коротко о том, что такое cookies (куки). Их создание, чтение и удаление.
Навигация по статье:
Что такое cookie
Cookies - это механизм хранения данных браузером удаленной машины для отслеживания или идентификации возвращающихся посетителей.
Создание cookie
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);
Параметры cookie
Ниже следует список аргументов (параметров) 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
// Удаление cookie
setcookie("name", "John", time()-3600);
Массивы и cookie
// Массивы и 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);