Работа с cookie в PHP
Опубликовано: 25 Января 2019
Cookie (куки) это небольшие наборы данных (не более 4 кБайт), с помощью которых веб-сайт может хранить на компьютере пользователя необходимую для своей работы информацию, например, для отслеживания активности пользователя или проверки авторизации.
Информация о том, что необходимо произвести какое-либо действие с Coookie отправляется вместе с http заголовками, поэтому, обработка cookies должна происходить до вывода какой-либо другой информации на странице.
Создание куки
Для создания куки используется функция setcookie():
bool setcookie(string $name, string $value, int $expire, string $path, string $domain, bool $secure, bool $httponly);
- name: имя cookie, которое будет использоваться для доступа к его значению
- value: значение или содержимое cookie — любой алфавитно-цифровой текст не более 4 кБайт
- expire (необязательный параметр): срок действия, после которого cookie уничтожаются. Если данный параметр не установлен или равен 0, то уничтожение cookie происходит после закрытия браузера.
- path (необязательный параметр): путь к каталогу на сервере, для которого будут доступны cookie. Если задать '/', cookie будут доступны для всего сайта. Если задать, например, '/mydir/', cookie будут доступны только из каталога /mydir/' и всех его подкаталогов. По умолчанию значением является текущий каталог, в котором устанавливаются cookie.
- domain (необязательный параметр): задает домен, для которого будут доступны cookie. Если это домен второго уровня, например, localhost.com, то cookie доступны для всего сайта localhost.com, в том числе и для его поддоменов типа blog.localhost.com. Если задан поддомен blog.localhost.com, то cookie доступны только внутри этого поддомена.
- secure (необязательный параметр): указывает на то, что значение cookie должно передаваться по протоколу HTTPS. Если задано true, cookie от клиента будет передано на сервер, только если установлено защищенное соединение. По умолчанию равно false.
- httponly (необязательный параметр): если равно true, cookie будут доступны только через http протокол. То есть cookie в этом случае не будут доступны скриптовым языкам, например, JavaScript. По умолчанию параметр равен false.
В куки можно сохранять любую информацию, но надо понимать что это не безопасно. Важные данные, такие как, например, — пароль, стоит как минимум зашифровать.
// Сохранение переменной с установкой времени жизни
setcookie("value", "Значение переменной", time()+3600);
// Сохранение массива
setcookie("key[1]", "Uno");
setcookie("key[2]", "Dos");
setcookie("key[3]", "Tres");
setcookie("key[4]", "Cuatro");
Получение cookie
Данные о cookie, хранятся в глобальном ассоциативном массиве $_COOKIE.
// Вывод переменной
if (isset($_COOKIE['autorize'])) ? echo "Hello world!" : echo "Вам необходимо авторизоваться";
// Вывод массива
if (isset($_COOKIE['counting'])) {
foreach ($_COOKIE['counting'] as $key => $value) {
$name = htmlspecialchars($key);
$value = htmlspecialchars($value);
echo "$key. $value <br />";
}
}
Удаление cookie
Для удаления cookie можно установить пустое значение для переменной, либо в качестве срока действия указать какое-либо время в прошлом:
if (isset($_COOKIE['variable'])) {
unset($_COOKIE['variable']); // чистим массив
// указываем прошедший временной период
setcookie ("variable", "", time() - 3600);
// или устанавливаем пустое значение
// setcookie("variable","");
}
Просмотр информации о cookie в браузере
Посмотреть какие куки использует та или иная страница можно в консоли разработчика (клавиша F12), на вкладке Network. Нажав на строку с адресом страницы можно увидеть все передаваемые заголовки, среди которых можно встретить и Cookie.
Узнать передает ли какое-либо действие информацию в куки, можно в том же месте, попробовав найти запись созданную действием, и посмотрев, есть ли там заголовок set-cookie.
В той же консоли разработчика можно посмотреть все файлы куки, которые созданы браузером для данного сайта. Эта информация содержится на вкладке Application, в подменю Cookies.
Также информацию о хранящихся cookie файлах можно найти в настройках браузера:
- Chrome: настройки → дополнительные → настройка контента → файлы cookie → файлы cookie и данные сайта
- FierFox: настройки → конфиденциальность и безопасность → cookies и информация сайта