Cookie — это небольшие текстовые данные, которые сервер отправляет браузеру и которые браузер возвращает при последующих запросах. Они используются для:
Основная функция для установки:
setcookie(
name: "user_token",
value: "abc123",
expires_or_options: time() + 3600, // Время жизни (1 час)
path: "/", // Доступно для всего сайта
domain: "example.com", // Домен
secure: true, // Только по HTTPS
httponly: true // Недоступно для JavaScript
);
Доступ через суперглобальный массив $_COOKIE
:
$token = $_COOKIE['user_token'] ?? null;
if ($token) {
echo "Найден токен: " . htmlspecialchars($token);
}
Важно:
Для удаления установите срок истечения в прошлое:
setcookie("user_token", "", time() - 3600, "/");
// Установка
setcookie("remember_me", "1", time() + 86400 * 30, "/", "example.com", true, true);
// Проверка
$remembered = isset($_COOKIE['remember_me']) && $_COOKIE['remember_me'] === "1";
// Установка языка
if (isset($_GET['lang'])) {
setcookie("site_lang", $_GET['lang'], time() + 86400 * 365, "/");
}
// Получение текущего языка
$language = $_COOKIE['site_lang'] ?? 'en';
// Установка подписанного cookie
function setSecureCookie($name, $value, $expire) {
$secret = 'your-secret-key';
$hash = hash_hmac('sha256', $value, $secret);
setcookie($name, $value . '|' . $hash, $expire, "/", "", true, true);
}
// Проверка подписи
function getSecureCookie($name) {
if (!isset($_COOKIE[$name])) return null;
list($value, $hash) = explode('|', $_COOKIE[$name], 2);
$secret = 'your-secret-key';
if (hash_hmac('sha256', $value, $secret) === $hash) {
return $value;
}
return null;
}
setcookie("session", $token, [
'expires' => time() + 3600,
'path' => '/',
'domain' => 'example.com',
'secure' => true,
'httponly' => true,
'samesite' => 'Strict'
]);
cookie в PHP устанавливаются функцией setcookie()
, доступны через $_COOKIE
и требуют внимательного отношения к безопасности. Используйте флаги Secure и HttpOnly, ограничивайте срок действия и никогда не доверяйте данным из cookie без проверки.