Использование 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);