Сегодня на 21-ом уроке мы разберем одну из ключевых тем для создания динамических веб-приложений, это работу с сессиями и куки в PHP. Эти инструменты позволяют сохранять данные между запросами пользователя, что критически важно для авторизации, корзин покупок, персонализации и многого другого.
Когда вы заходите на сайт, сервер не «помнит» вас между разными страницами. HTTP это протокол без состояния, но сессии решают эту проблему. Сессия это механизм, который сохраняет данные на сервере в течение времени активности пользователя. Каждой сессии присваивается уникальный идентификатор (Session ID), который хранится у клиента (обычно в куки) и отправляется обратно на сервер с каждым запросом.
В PHP для работы с сессиями используется глобальный массив $_SESSION. Перед началом работы с ним нужно запустить сессию функцией session_start(). Этот код должен быть вызван до любого вывода данных в браузер (даже до тега <html>).
<?php
// Всегда запускаем сессию в начале скрипта
session_start();
// Записываем данные в сессию
$_SESSION['username'] = 'Maxim';
$_SESSION['visit_count'] = 1;
echo 'Сессия создана! Данные сохранены.';
?>
Чтобы получить данные, просто обращайтесь к элементам массива $_SESSION:
<?php
session_start();
if (isset($_SESSION['username'])) {
echo 'Привет, ' . $_SESSION['username'] . '! Вы посетили сайт ' . $_SESSION['visit_count'] . ' раз.';
} else {
echo 'Сессия не найдена.';
}
?>
Чтобы завершить сессию и удалить все данные, используйте session_destroy(). Но учтите: эта функция не очищает массив $_SESSION сразу. Лучше сделать это вручную:
<?php
session_start();
// Удаляем все данные сессии
$_SESSION = array();
// Уничтожаем сессию
session_destroy();
echo 'Сессия удалена.';
?>
Куки (Cookies) это небольшие текстовые файлы, которые хранятся на компьютере пользователя. Они позволяют запоминать данные между сессиями (например, настройки сайта или логин для автоматической авторизации).
В PHP куки создаются функцией setcookie(). Ее параметры:
Пример:
<?php
// Куки сохраняется на 1 час (3600 секунд)
setcookie('user', 'Maxim', time() + 3600, '/');
echo 'Куки созданы!';
?>
Данные кук хранятся в глобальном массиве $_COOKIE:
<?php
if (isset($_COOKIE['user'])) {
echo 'Привет, ' . $_COOKIE['user'] . '!';
} else {
echo 'Куки не найдены.';
}
?>
Чтобы удалить куки, установите время жизни в прошлое:
<?php
setcookie('user', '', time() - 3600, '/');
echo 'Куки удалены.';
?>
| Параметр | Сессии | Куки |
|---|---|---|
| Хранение данных | На сервере | На клиенте |
| Безопасность | Выше (данные защищены) | Ниже (можно подделать) |
| Время жизни | До закрытия браузера | Задается разработчиком |
| Объем данных | Большой (до лимитов PHP) | До 4 КБ на куки |
Создайте счетчик, который показывает, сколько раз пользователь зашел на страницу. Используйте сессии.
<?php
session_start();
if (!isset($_SESSION['visit_count'])) {
$_SESSION['visit_count'] = 1;
} else {
$_SESSION['visit_count']++;
}
echo 'Вы посетили страницу ' . $_SESSION['visit_count'] . ' раз.';
?>
Позвольте пользователю выбрать тему (светлая/темная) и сохраните выбор в куки.
<form method="POST"> <select name="theme"> <option value="light">Светлая</option> <option value="dark">Темная</option> </select> <button type="submit">Сохранить</button> </form> <?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $theme = $_POST['theme']; setcookie('theme', $theme, time() + 86400 * 30, '/'); // На 30 дней echo 'Тема сохранена!'; } ?>
session_regenerate_id(true) для защиты от перехвата.HttpOnly, чтобы защититься от XSS-атак.Теперь вы умеете работать с сессиями и куками, это основа для создания интерактивных веб-приложений. Попрактикуйтесь на задачах и закрепляйте знания. Если хотите глубже изучить PHP, переходите к полному курсу по PHP для начинающих. Удачи в обучении.