Cookies – это механизм хранения данных браузером для отслеживания или идентификации возвращающихся посетителей. В PHP работа с Cookie происходит следующем образом:
Установка cookies производится функцией setcookie или setrawcookie (без URL-кодирования значения).
Cookie передаются клиенту вместе с другими HTTP-заголовками, поэтому setcookie() должна быть вызвана до вывода в браузер.
Где:
$name
– название;
$value
– значение;
$expires
– время жизни (метка времени Unix), если 0 или пропустить аргумент, cookie будут действовать до закрытия браузера.
$path
– путь к директории, из которой будут доступны cookie. Если задать '/', cookie будут доступны во всем домене.
$domain
– домен, которому доступны cookie. Например, 'www.example.com
' сделает cookie доступными только в нём. Для того, чтобы сделать cookie доступными для всего домена и поддоменов, нужно указать имя домена 'example.com
'.
$secure
– при true
значения cookie будут доступны только по HTTPS.
$httponly
– при true
, cookie будут доступны только через HTTP-протокол.
Пример установки cookies:
// До закрытия браузера
setcookie('test-1', 'Значение 1');
// На 1 месяц
setcookie('test-1', 'Значение 1', strtotime('+30 days'));
Пример установки массива в cookies:
setcookie('test-2[0]', 'Значение 1');
setcookie('test-2[1]', 'Значение 2');
setcookie('test-2[2]', 'Значение 3');
или
$array = array(
'Значение 1',
'Значение 2',
'Значение 3',
);
foreach ($array as $i => $row) {
setcookie('test-2[' . $i . ']', $row);
}
Альтернативная вариант доступен с PHP 7.3.0:
Где $options
массив, который может содержать любой из ключей: expires
, path
, domain
, secure
, httponly
и samesite
.
Значение элемента samesite может быть либо None
, Lax
или Strict
.
После передачи клиенту cookie станут доступны через глобальный массив $_COOKIE
при следующей загрузке страницы. Значения cookie также есть в массиве $_REQUEST
.
Например, вывести одно конкретное значение cookie:
Вывести массив:
Array
(
[0] => Значение 1
[1] => Значение 2
[2] => Значение 3
)
Чтобы удалить cookies достаточно в setcookie()
, в аргументе $expires
указать какое-либо прошедшее время. Например 1 час: