Файл cookie
— это небольшой текстовый файл, который позволяет хранить небольшой объем данных (около 4 КБ) на компьютере пользователя. Обычно эти файлы используются для отслеживания такой информации, как, например, имя пользователя, которое сайт может извлечь для персонализации страницы, когда пользователь посетит сайт в следующий раз.
Каждый раз, когда браузер запрашивает страницу на сервере, все данные в файле cookie автоматически отправляются на сервер в рамках запроса.
Установка cookie в PHP
Функция setcookie()
используется для установки cookie в PHP. Убедитесь, что вы вызываете функцию setcookie()
перед любым выводом, сгенерированным вашим скриптом, иначе cookie не будет установлен. Базовый синтаксис этой функции может быть задан следующим образом:
setcookie(name, value, expire, path, domain, secure);
Параметры функции setcookie()
имеют следующие значения:
Параметр | Описание |
---|---|
name |
Название cookie. |
value |
Значение файла cookie. Не храните конфиденциальную информацию, поскольку это значение хранится на компьютере пользователя. |
expires |
Дата истечения срока хранения в формате временной метки UNIX. По истечении этого времени cookie станет недоступным. Значение по умолчанию — 0. |
path |
Путь на сервере по которому будет доступен файл cookie. Если установлено значение / , cookie будет доступен во всем домене. |
domain |
Указывает домен, для которого cookie доступен, например www.example.com. |
secure |
Это поле, если оно присутствует, указывает на то, что файл cookie следует отправлять только при наличии защищенного HTTPS-соединения. |
Если срок действия cookie установлен на 0 или опущен, срок действия cookie истечет в конце сеанса, то есть при закрытии браузера.
Вот пример, в котором функция setcookie()
используется для создания файла cookie
с именем username
и присваивает ему значение value
John Carter
. Она также указывает, что срок действия cookie истечет через 30 дней (30 days * 24 hours * 60 min * 60 sec
).
<?php
// Установка куки
setcookie("username", "John Carter", time()+30*24*60*60);
?>
Все аргументы, кроме имени, необязательны. Вы также можете заменить аргумент пустой строкой («»), чтобы пропустить этот аргумент, однако, чтобы пропустить аргумент истечения срока действия (expires), используйте вместо него ноль (0).
Не храните конфиденциальные данные в файлах cookie, поскольку злоумышленник потенциально может ими манипулировать. Для безопасного хранения конфиденциальных данных используйте вместо этого сессии.
Доступ к значениям файлов cookie
Суперглобальная переменная PHP $_COOKIE
используется для получения значений cookie. Обычно это ассоциативный массив, содержащий список всех значений файлов cookie, отправленных браузером в текущем запросе, с ключом по имени файла cookie.
Доступ к индивидуальному значению cookie можно получить, используя стандартную нотацию массива, например, для отображения файла cookie имени пользователя, установленного в предыдущем примере, вы можете использовать следующий код.
<?php
// Доступ к индивидуальному значению cookie
echo $_COOKIE["username"]; // Выводит: John Carter
?>
Перед тем, как получить доступ к его значению, рекомендуется проверить, установлен ли файл cookie или нет. Для этого вы можете использовать PHP-функцию isset()
, например:
<?php
// Проверяем, установлен ли cookie или нет
if(isset($_COOKIE["username"])){
echo "Hi " . $_COOKIE["username"];
} else{
echo "Welcome Guest!";
}
?>
Вы можете использовать функцию print_r()
, например print_r($_COOKIE);
чтобы увидеть структуру этого ассоциативного массива $_COOKIE
.
Удаление файлов cookie
Вы можете удалить cookie, вызвав ту же функцию setcookie()
с именем cookie и любым значением (например, пустой строкой), однако на этот раз вам нужно установить дату истечения срока действия в прошлом, как показано в примере ниже:
<?php
// Удаление куки
setcookie("username", "", time()-3600);
?>
Вы должны передать точно такой же путь, домен и другие аргументы, которые вы использовали при первом создании файла cookie, чтобы гарантированно удалить файл cookie.