Куки (cookies) — это небольшие фрагменты данных, которые веб-сервер отправляет браузеру клиента для сохранения информации на стороне пользователя. Куки широко используются для хранения состояния сеанса, предпочтений пользователей и другой информации, необходимой для функционирования сайта. В PHP работа с куками осуществляется с помощью суперглобального массива $_COOKIE
и функции setcookie()
.
Установка куки
Чтобы установить куки, используется функция setcookie()
. Она принимает следующие параметры:
$name
— имя куки.$value
— значение куки.$expire
— время жизни куки в секундах (опционально).$path
— путь, в пределах которого доступна кука (опционально).$domain
— домен, в пределах которого доступна кука (опционально).$secure
— следует ли передавать куки только через HTTPS (опционально).$httponly
— доступ к куке только через HTTP (защита от XSS атак) (опционально).
Пример установки куки:
<?php // Устанавливаем куки с именем 'username' и значением 'John Doe' setcookie('username', 'John Doe', time() + (86400 * 30), "/"); // Кука хранится 30 дней ?>
Чтение куки
Для чтения значения куки используется суперглобальный массив $_COOKIE
. Пример:
<?php if (isset($_COOKIE['username'])) { echo "Привет, " . htmlspecialchars($_COOKIE['username']); } else { echo "Кука 'username' не установлена."; } ?>
Удаление куки
Чтобы удалить куки, установите срок действия куки в прошлое. Например:
<?php // Удаляем куки с именем 'username' setcookie('username', '', time() - 3600, '/'); ?>
Пример полной страницы с установкой, чтением и удалением куки
<?php // Функция для вывода сообщения об ошибках function showErrorMessage($message) { echo "<p style='color: red'>Ошибка: $message</p>"; } // Проверяем, был ли отправлен запрос на установку куки if (isset($_GET['action']) && $_GET['action'] == 'set') { if (isset($_GET['username']) && !empty($_GET['username'])) { setcookie('username', $_GET['username'], time() + (86400 * 30), "/"); header("Location: " . $_SERVER['PHP_SELF']); // Перенаправляем на текущую страницу exit(); } else { showErrorMessage("Не указано имя пользователя."); } } // Проверяем, был ли отправлен запрос на удаление куки if (isset($_GET['action']) && $_GET['action'] == 'delete') { setcookie('username', '', time() - 3600, '/'); header("Location: " . $_SERVER['PHP_SELF']); // Перенаправляем на текущую страницу exit(); } // Читаем значение куки if (isset($_COOKIE['username'])) { echo "Привет, " . htmlspecialchars($_COOKIE['username']) . "! "; echo '<a href="' . $_SERVER['PHP_SELF'] . '?action=delete">Удалить куки</a>'; } else { echo ' <form action="' . $_SERVER['PHP_SELF'] . '" method="get"> Введите ваше имя: <input type="text" name="username"><br> <input type="hidden" name="action" value="set"> <input type="submit" value="Установить куки"> </form> '; } ?>
Пояснения
- Установка куки:
- Когда пользователь вводит свое имя и нажимает кнопку «Установить куки», отправляется GET-запрос с параметром
action=set
и именем пользователя. - Скрипт проверяет, установлен ли параметр
action
и равен ли онset
, затем устанавливает куки с именем пользователя и перенаправляет на ту же страницу.
- Когда пользователь вводит свое имя и нажимает кнопку «Установить куки», отправляется GET-запрос с параметром
- Чтение куки:
- Если куки установлены, скрипт выводит приветственное сообщение с именем пользователя и ссылку для удаления куки.
- Удаление куки:
- Когда пользователь нажимает на ссылку «Удалить куки», отправляется GET-запрос с параметром
action=delete
. - Скрипт удаляет куки, устанавливая срок их действия в прошлое, и перенаправляет на ту же страницу.
- Когда пользователь нажимает на ссылку «Удалить куки», отправляется GET-запрос с параметром
Заключение
Куки в PHP — мощный инструмент для управления состоянием сеанса и хранения небольших объемов данных на стороне клиента. Однако важно помнить о безопасности и ограничениях куков, таких как ограничение размера (обычно около 4 КБ) и возможность изменения пользователями.