Портфоліо
Розробляємо інтернет-магазини, CRM системи, SaaS, APP платформи — впроваджуємо AI у процеси та рішення.
Client Logo
Icon 5.0
+150 клієнтів
Новий проєкт
Project Image
Технології
Розробляємо інтернет-магазини, CRM системи, SaaS, APP платформи — впроваджуємо AI у процеси та рішення.
Client Logo
Icon 5.0
+150 клієнтів
Новий проєкт
Project Image
15.10.2025

Робота з PHP сесіями і куками користувача. Короткий посібник для початківців.

Основні моменти при роботі з сесіями. Опис механізму роботи. Як сесії потрапляють в кукі або в заголовки HTTP відповідей?

Сесія – дані, які зберігаються на сервері (в файлах, в кеші, в базі даних …). Доступ до них можна отримати за унікальним ідентифікатором. Доступ є тільки через сервер, тому це сховище вважають захищеним. Доступ до сесій через глобальну PHP змінну $ _SESSIONS.

Кукі – дані, які зберігаються у клієнта (в браузері, в додатку …). Можуть бути закриті клієнтом або не підтримуватись. Можуть підмінятися клієнтом або третьою стороною. Доступ до куків, через глобальну PHP змінну $ _COOKIES.

Для підключення до сховища сесій в PHP є функція session_start(). При виклику цієї функції, автоматично підхоплюється з HTTP запиту – унікальний ідентифікатор сесії, або якщо такого немає, створюється новий. Тому важливо викликати session_start() для встановлення заголовків headers. В кінці виконання PHP скрипта, виконується серіалізація $_SESSIONS і запис в сховище сесій, за унікальним ідентифікатором, або використовуючи функцію session_write_close().

Важливо розуміти, що якщо зберігати дані в файлах (як і зроблено в PHP за замовчуванням), то при зверненні до ресурсу декількох тисач користувачів, сервер почне загинатися, тому що файли зберігаються в одній папці і буде багато операцій читання/запису. Рішення проблеми: зберігати сесії, наприклад в кеші. Також не потрібно створювати сесію, якщо в ній немає необхідності.

Видалення сесії

// Видаляємо куки сесії, 
setcookie(session_name(), session_id(), time()-60*60*24);
// Видаляємо сесію 
session_unset();
session_destroy();

Автоматичне видалення сесії. Очищення сміття.

PHP сам чистить старі, невикористовувані сесії, для цього є механізм garbage collection. У php.ini є параметри, що відповідають за налаштування цього механізму session.gc_probability і session.gc_divisor.

Зависання сесії. Dead lock в сесіях.

Для того, щоб мати доступ до сесій і зменшити ймовірність замикання сесії одним процесом, рекомендується після кожного звернення до сесії, закривати автоматично сесію, викликавши функцію session_write_close(). В такому випадку подальша поведінка скрипта не впливатиме на файл сесій.

Особливості використання session_set_cookie_params()

До використання функції session_set_cookie_params() необхідно встановити session_name(), інакше передача ідентифікатора сесії у відповідь запиту не станься. Це просто особливість роботи з сесіями.

Давайте
рухати
світ
разом
стати клієнтом
Redstone Icon
Зателефонувати
Менеджер REDSTONE
Play Muted Unmuted Link Drag