Использование cookie в PHP
В данной заметке коротко о том, что такое 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);
Предыдущая запись
Основы PHP 7 Часть #4: Формы, Работа с формамиСледующая запись
Основы PHP 7 Часть #6: HTTP-заголовки ответа сервера