Что такое куки?
Куки — это небольшой текстовый файл, который сервер сохраняет в веб-браузере пользователя. Затем куки отправляются вместе с каждым HTTP-запросом к серверу.
Куки идеально подходят для хранения информации, которая может быть получена позже. Вот несколько примеров:
- Имя пользователя
- Поддержание статуса входа
- Содержимое корзины покупок
- Языковые настройки
- Отслеживание активности пользователя
Создание куки в PHP
Куки создаются с помощью функции
setcookie().
Синтаксис
setcookie(имя, значение, срок_действия, путь, домен, secure, httponly);
Обязательным является только параметр имя. Все остальные параметры являются необязательными.
- name - Обязательный. Указывает имя куки
- value - Необязательный. Указывает значение куки
- expire - Необязательный. Указывает, когда истекает срок действия куки
- path - Необязательный. Указывает серверный путь куки
- domain - Необязательный. Указывает доменное имя куки
- secure - Необязательный. Указывает, должна ли куки передаваться только через защищенное HTTPS-соединение
- httponly - Необязательный. Если установлен в TRUE, куки будет доступна только через HTTP-протокол
Примечание: Функция
setcookie() должна находиться ДО тега <html>,
поскольку куки являются частью HTTP-заголовка.
Чтобы получить значение куки, используйте суперглобальную переменную
$_COOKIE.
Создание и получение куки в PHP
Следующий пример создает куки с именем "username" и значением "Иван Петров".
Мы устанавливаем срок действия 30 дней (86400 = 1 день).
Мы устанавливаем путь "/", что означает, что куки доступна на всем веб-сайте (в противном случае выберите нужный вам каталог).
Чтобы получить значение куки "username", используйте суперглобальную переменную $_COOKIE.
Мы также используем функцию
isset(), чтобы проверить, существует ли куки, прежде чем пытаться получить к ней доступ:
Пример
<?php
$cookie_name = "username";
$cookie_value = "Иван Петров";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 день
?>
<html>
<body>
<?php
if(isset($_COOKIE[$cookie_name])) {
echo "Куки '" . $cookie_name . "' установлена!<br>";
echo "Значение: " . $_COOKIE[$cookie_name];
} else {
echo "Куки с именем '" . $cookie_name . "' не установлена!";
}
?>
</body>
</html>
Примечание: Функция
setcookie() должна находиться ДО тега <html>.
Примечание: Значение куки автоматически кодируется URL при отправке куки и автоматически декодируется при получении (чтобы предотвратить URL-кодирование, используйте
setrawcookie()).
Изменение значения куки
Чтобы изменить куки, просто установите (снова) куки с помощью функции
setcookie():
Пример
<?php
$cookie_name = "username";
$cookie_value = "Алексей Смирнов";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>
<?php
if(isset($_COOKIE[$cookie_name])) {
echo "Куки '" . $cookie_name . "' установлена!<br>";
echo "Значение: " . $_COOKIE[$cookie_name];
} else {
echo "Куки с именем '" . $cookie_name . "' не установлена!";
}
?>
</body>
</html>
Удаление куки
Чтобы удалить куки, используйте функцию
setcookie() с истекшим сроком действия:
Пример
<?php
// устанавливаем дату истечения на один час назад
setcookie("username", "", time() - 3600);
?>
<html>
<body>
<?php
echo "Куки 'username' удалена.";
?>
</body>
</html>
Проверка включены ли куки
Следующий пример создает небольшой скрипт, который проверяет, включены ли куки. Сначала попробуйте создать тестовую куки с помощью функции
setcookie(), затем подсчитайте переменную массива $_COOKIE:
Пример
<?php
setcookie("test_cookie", "test", time() + 3600, '/');
?>
<html>
<body>
<?php
if(count($_COOKIE) > 0) {
echo "Куки включены.";
} else {
echo "Куки отключены.";
}
?>
</body>
</html>
Полный справочник сетевых функций PHP
Для получения полного справочника сетевых функций перейдите к нашему Полному справочнику сетевых функций PHP.