Оглавление
Введение в кукиКак работают кукиЗачем использовать кукиУстановка куки в PHPРабота с массивом $_COOKIEПример использования куки в PHPИтог
Куки в PHP
Введение в куки
В основе работы веба лежит протокол HTTP, который является сессионным протоколом без сохранения состояния. Это значит, что каждый запрос к серверу обрабатывается независимо, и сервер не "помнит", кто к нему обращался ранее.
Куки решают эту проблему. Куки - это небольшой фрагмент данных, который сервер отправляет браузеру. Браузер может сохранить его и отправлять обратно при последующих запросах к тому же серверу. Так сервер понимает, что запросы идут от одного и того же браузера.
Куки также называют веб-куки, HTTP-куки или браузерные куки. В этом уроке для краткости используется термин "куки".
Как работают куки
- Браузер отправляет запрос серверу. Сервер не знает ничего о браузере.
- Сервер создаёт куки (например, с именем
returnи значением1) и добавляет её к HTTP-ответу. Для этого используется функцияsetcookie(). - Браузер сохраняет куки.
- При следующем запросе браузер отправляет сохранённую куки в заголовке HTTP-запроса.
- Сервер получает куки через суперглобальный массив
$_COOKIEи может использовать эти данные. - Сервер отвечает, формируя контент с учётом значения куки.
Ограничения:
- Размер одной куки до 4 КБ (зависит от браузера).
- У куки есть срок действия (expiration date), который может задавать сервер.
- Куки привязаны к домену и пути, с которых были созданы. Сайт не может читать куки, установленные другим сайтом.
- Пользователи могут запретить сохранение куки в настройках браузера. Не стоит хранить в куки критически важные данные.
Зачем использовать куки
Куки применяются для:
- Управления сессиями (например, запоминание пользователя и его логина).
- Персонализации (сохранение настроек, тем, предпочтений).
- Отслеживания (запись действий пользователя, например, просмотренных товаров для рекомендаций).
Установка куки в PHP
PHP предоставляет функцию
setcookie() для создания куки.Синтаксис (до PHP 7.3.0):
Синтаксис (PHP 7.3.0 и новее):
В массиве
$options можно указывать ключи: expires, path, domain, secure, httponly, samesite(None, Lax, Strict).Функция возвращает
true, если заголовок успешно отправлен (не гарантирует, что браузер принял куки), и false при ошибке.Работа с массивом $_COOKIE
Массив
$_COOKIE - это ассоциативный массив, где хранятся все полученные от браузера куки.Доступ к значению:
Если в имени куки есть точки или пробелы, они заменяются на подчёркивания.
Проверка существования:
Проверка значения:
Удаление куки:
PHP не имеет отдельной функции для удаления куки. Для этого нужно установить срок действия в прошлое:
Пример использования куки в PHP
Пример: приветствие нового или возвращающегося посетителя.
Как это работает:
- Определяется константа
ONE_WEEK(7 дней в секундах). - Переменная
$returning_visitorизначальноfalse. - Если куки
returnfalse - создаём её на неделю. - Если есть - отмечаем посетителя как возвращающегося.
- Выводим соответствующее приветствие.
При первом посещении: Welcome to my website!
При повторном (в течение недели): Welcome back!
Итог
- Куки - это способ сервера "узнавать" браузер между запросами.
- Для работы с куки в PHP используйте
setcookie()и массив$_COOKIE. - Не храните в куки секретные данные.
- Куки удобны для сессий, персонализации и аналитики.

