Как удалить cookie на PHP

В PHP есть встроенные функции для работы с cookie, и иногда возникает задача не только создать или прочитать cookie, но и удалить их. Итак, давайте подробно рассмотрим процесс удаления cookie в PHP.

Как устроены cookie

Прежде чем перейти к удалению, стоит понять, что такое cookie. Cookie – это текстовые строки данных, которые сервер может отправлять браузеру с целью сохранения и последующего получения определённой информации о посетителе сайта. Это могут быть данные для аутентификации пользователя, предпочтений в навигации по сайту и различных настроек.

Создание и чтение cookie

Перед тем как удалять cookie, вспомним как они создаются. Для создания cookie в PHP используется функция setcookie():

setcookie("TestCookie", "SomeValue", time() + 3600, "/");

Первый параметр — имя куки, второй — значение куки. Третий параметр — время жизни куки (UNIX timestamp), четвертый параметр — путь на домене, для которого доступна данная кука.

Для чтения значения куки используйте глобальный массив $_COOKIE:

if (isset($_COOKIE["TestCookie"])) {
    echo $_COOKIE["TestCookie"];
}

Удаление cookie

Теперь давайте рассмотрим способы удаления cookie. Для того чтобы “удалить” cookie из браузера пользователя, нужно отправить браузеру новый заголовок Set-Cookie для соответствующего имени кукис с прошедшим временем жизни.

Включите следующий код перед любым выводом текста (это обязательное условие работы функции setcookie):

// Устанавливаем время жизни кукис "TestCookie" на прошедшую дату,
// что приводит к его удалению
setcookie("TestCookie", "", time() - 3600, "/");

Обратите внимание на третий параметр: мы устанавливаем время жизни на один час назад от текущего времени. Это сообщает браузерам удалить этот cookie. Поскольку мы не можем физически удалить кукис у клиента, мы можем заставить его стать“устаревшим”, что приведет ко его удалению.

Для полного очищения всех кукис можно использовать цикл по массиву $_COOKIE. Например:

foreach ($_COOKIE as $key => $value) {
    setcookie($key, '', time() - 3600, '/');
}

Этот код перебирает все существующие у пользователя кукисы и устанавливает каждому из них время жизни на час назад.

Нюансы при работе с путями и доменами

Обратите также внимание на четвертый параметр функции setcookie, который указывает путь для доступности cookies. Если вы указали конкретный путь при создании cookies (не корень “/”), то и при удалении необходимо указывать тот же самый путь:

setcookie("TestCookie", "", time() - 3600, "/path/");

Аналогичным образом следует поступать и с доменами (если был задан). Если при создании использовалась определённая поддоменная конструкция или полный домен:

setcookie("TestCookie", "SomeValue", time() + 3600, "/", ".example.com");

То и при удалении стоит указывать тот же домен:

setcookie("TestCookie", "", time() - 3600, "/", ".example.com");

Заключение

Управление cookies – это мощный инструмент для разработчиков Web-приложений. Коректное использование функций setcookie() поможет грамотно управлять данными пользователями вашего сайта: сохранять нужную информацию и безопасно её удалять при необходимости. Удачной разработки!