Cookies

С помощью cookies можно сохранять информацию. Например, когда пользователь посещает страницу сайта, в cookies можно сделать запись «страница посещена». При следующем открытии страницы, можно выводить сообщение «страница просмотрена».

Создаются cookies через функцию setcookie().

// создание cookie
setcookie("cookie_name", "Сохранённая информация", time() + 3600);

Все cookies доступны через массив $_COOKIE. Например, cookie, созданный выше, можно вывести через следующий код:

echo $_COOKIE['cookie_name']; // Сохранённая информация

Третий параметр функции setcookie() указывает время хранения cookies в секундах. В примере выше указано время хранения в 1 час (3600 секунд).

Cookies передаются клиенту вместе с HTTP заголовками, поэтому cookies должны быть определены до вывода HTML.

Нельзя создать cookies и тут же их использовать. Вывести cookies можно будет с обновлением страницы.

Через четвёртый параметр можно указывать URL, для которой будет сохраняться cookies. По умолчанию cookies сохраняется для текущего URL.

// Сохранение cookies для всех страниц
setcookie("name", "Сохранённая информация", time() + 3600, '/');

// Сохранение cookies для раздела "catalog/"
setcookie("name", "Сохранённая информация", time() + 3600, '/catalog/');

// Сохранение cookies для указанной страницы
setcookie("name", "Сохранённая информация", time() + 3600, '/about.html');

Создавать cookies рекомендуется с включённым параметром httponly, который запрещает доступ к cookies из JavaScript (в целях предотвращения XSS-атак).

# в .htaccess (рекомендуется)
<IfModule php5_module>
php_flag session.cookie_httponly on
</IfModule>

# при создании cookies
setcookie("name", "Сохранённая информация", time() + 3600, '/page.html', '', false, true);

Параметр «httponly» появился в версии PHP 5.2.0.

Удаление cookies

Чтобы удалить cookies, надо для текущей cookies задать время хранения в прошедшем времени. Например, код ниже устанавливает cookies на час назад, т.е. удаляет его, т.к. истекло время хранения.

// Пример удаления cookies
setcookie("name", "Сохранённая информация", time() - 3600);

Обновление cookies

Cookies обновляются также, как и создаются, только устанавливается новое значение.

// Создание cookies
setcookie("name", "Сохранённая информация", time() + 3600);

// Обновление cookies
setcookie("name", "Новое значение", time() + 3600);