Функция PHP setcookie(): всё, что нужно знать
Как PHP-разработчику, вам может потребоваться устанавливать cookies для хранения информации на стороне клиента. Функция setcookie() — это встроенная функция PHP, которая занимается этим. В этой статье мы рассмотрим её современный синтаксис, применение, а также то, как читать или удалять cookies.
Что такое функция setcookie()?
Функция setcookie() — это встроенная функция PHP, которая позволяет устанавливать cookie на стороне клиента.
Как использовать функцию setcookie()
Использование функции setcookie() довольно просто. Синтаксис с массивом параметров был добавлен в PHP 7.3. В PHP 8.1 устаревший синтаксис с семью позиционными параметрами был помечен как устаревший. Вот современный синтаксис:
PHP-синтаксис функции setcookie()
setcookie($name, $value, $options);Параметр $options — это ассоциативный массив, принимающий следующие ключи:
expires: Время истечения срока действия cookie (Unix-временная метка).path: Путь на сервере, в котором cookie будет доступна.domain: Домен, на котором cookie будет доступна.secure: Указывает, должна ли cookie передаваться только по HTTPS.httponly: Указывает, должна ли cookie быть доступной только через HTTP (не через клиентские скрипты).samesite: Ограничивает использование cookie запросами с того же сайта. Принимает'Strict','Lax'или'None'.
Вот пример использования функции setcookie() для установки cookie:
Как использовать функцию setcookie()?
<?php
$options = [
'expires' => time() + (86400 * 30), // 30 дней
'path' => '/',
'domain' => '.example.com',
'secure' => true,
'httponly' => true,
'samesite' => 'Lax'
];
setcookie('username', 'john', $options);В этом примере мы используем функцию setcookie() для установки cookie с именем username и значением john. Мы также указываем время истечения через 30 дней от текущего момента, путь на сервере как /, домен как .example.com, а флаги secure, httponly и samesite устанавливаем для обеспечения передачи cookie только по HTTPS, недоступности через клиентские скрипты и ограничения использования запросами с того же сайта соответственно.
Чтение cookies
Cookies, установленные с помощью setcookie(), автоматически становятся доступными в суперглобальном массиве $_COOKIE при последующих запросах страницы. Вы можете проверить их наличие и прочитать значения следующим образом:
if (isset($_COOKIE['username'])) {
echo "Welcome, " . htmlspecialchars($_COOKIE['username']);
}Удаление cookies
Чтобы удалить cookie, необходимо установить время её истечения в прошлое. Значение можно оставить пустым или установить в null.
setcookie('username', '', [
'expires' => time() - 3600,
'path' => '/',
]);Важные примечания
- Возвращаемое значение:
setcookie()возвращаетtrueпри успехе иfalseпри ошибке (в том числе при уже отправленных заголовках). - Заголовки уже отправлены: Cookies должны устанавливаться до отправки любого вывода в браузер (включая HTML, пробелы или
echo). В противном случае PHP выдаст предупреждение "Headers already sent". - Автоматическое кодирование:
setcookie()автоматически URL-кодирует значения cookies, поэтому ручное кодирование обычно не требуется.
Заключение
Функция setcookie() — полезный инструмент для установки cookies в вашем PHP-веб-приложении. Понимая современный синтаксис и особенности использования функции, вы сможете легко управлять данными на стороне клиента. Надеемся, эта статья оказалась полезной и помогла разобраться в том, как устанавливать, читать и удалять cookies в PHP.
Практика
Какие факторы могут влиять на работу функции setcookie в PHP?