Куки (cookies) PHP

Куки (cookies) — это небольшие фрагменты данных, которые веб-сервер отправляет браузеру клиента для сохранения информации на стороне пользователя. Куки широко используются для хранения состояния сеанса, предпочтений пользователей и другой информации, необходимой для функционирования сайта. В PHP работа с куками осуществляется с помощью суперглобального массива $_COOKIE и функции setcookie().

Установка куки

Чтобы установить куки, используется функция setcookie(). Она принимает следующие параметры:

  • $name — имя куки.
  • $value — значение куки.
  • $expire — время жизни куки в секундах (опционально).
  • $path — путь, в пределах которого доступна кука (опционально).
  • $domain — домен, в пределах которого доступна кука (опционально).
  • $secure — следует ли передавать куки только через HTTPS (опционально).
  • $httponly — доступ к куке только через HTTP (защита от XSS атак) (опционально).

Пример установки куки:

<?php
// Устанавливаем куки с именем 'username' и значением 'John Doe'
setcookie('username', 'John Doe', time() + (86400 * 30), "/"); // Кука хранится 30 дней
?>

Чтение куки

Для чтения значения куки используется суперглобальный массив $_COOKIE. Пример:

<?php
if (isset($_COOKIE['username'])) {
    echo "Привет, " . htmlspecialchars($_COOKIE['username']);
} else {
    echo "Кука 'username' не установлена.";
}
?>

Удаление куки

Чтобы удалить куки, установите срок действия куки в прошлое. Например:

<?php
// Удаляем куки с именем 'username'
setcookie('username', '', time() - 3600, '/');
?>

Пример полной страницы с установкой, чтением и удалением куки

<?php
// Функция для вывода сообщения об ошибках
function showErrorMessage($message) {
    echo "<p style='color: red'>Ошибка: $message</p>";
}

// Проверяем, был ли отправлен запрос на установку куки
if (isset($_GET['action']) && $_GET['action'] == 'set') {
    if (isset($_GET['username']) && !empty($_GET['username'])) {
        setcookie('username', $_GET['username'], time() + (86400 * 30), "/");
        header("Location: " . $_SERVER['PHP_SELF']); // Перенаправляем на текущую страницу
        exit();
    } else {
        showErrorMessage("Не указано имя пользователя.");
    }
}

// Проверяем, был ли отправлен запрос на удаление куки
if (isset($_GET['action']) && $_GET['action'] == 'delete') {
    setcookie('username', '', time() - 3600, '/');
    header("Location: " . $_SERVER['PHP_SELF']); // Перенаправляем на текущую страницу
    exit();
}

// Читаем значение куки
if (isset($_COOKIE['username'])) {
    echo "Привет, " . htmlspecialchars($_COOKIE['username']) . "! ";
    echo '<a href="' . $_SERVER['PHP_SELF'] . '?action=delete">Удалить куки</a>';
} else {
    echo '
        <form action="' . $_SERVER['PHP_SELF'] . '" method="get">
            Введите ваше имя: <input type="text" name="username"><br>
            <input type="hidden" name="action" value="set">
            <input type="submit" value="Установить куки">
        </form>
    ';
}
?>

 

Пояснения

  1. Установка куки:
    • Когда пользователь вводит свое имя и нажимает кнопку «Установить куки», отправляется GET-запрос с параметром action=set и именем пользователя.
    • Скрипт проверяет, установлен ли параметр action и равен ли он set, затем устанавливает куки с именем пользователя и перенаправляет на ту же страницу.
  2. Чтение куки:
    • Если куки установлены, скрипт выводит приветственное сообщение с именем пользователя и ссылку для удаления куки.
  3. Удаление куки:
    • Когда пользователь нажимает на ссылку «Удалить куки», отправляется GET-запрос с параметром action=delete.
    • Скрипт удаляет куки, устанавливая срок их действия в прошлое, и перенаправляет на ту же страницу.

Заключение

Куки в PHP — мощный инструмент для управления состоянием сеанса и хранения небольших объемов данных на стороне клиента. Однако важно помнить о безопасности и ограничениях куков, таких как ограничение размера (обычно около 4 КБ) и возможность изменения пользователями.

Добавить комментарий

Войти с помощью: