Основи використання

Сесії є простим способом зберігання інформації окремих користувачів з унікальним ідентифікатором сесії. Це може бути використане для збереження стану між запитами сторінок. Ідентифікатори сесій зазвичай відправляються браузеру через сесійний cookie та використовуються для отримання наявних даних сесії. Відсутність ідентифікатора сесії або сесійного cookie повідомляє PHP про те, що необхідно створити нову сесію та згенерувати новий ідентифікатор сесії.

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

По умолчанию PHP использует внутренний обработчикfiles для збереження сесій, який встановлений в INI-змінній session.save_handler. Цей обробник зберігає дані на сервері в директорії, вказаній у конфігураційній директиві session.save_path

Сесії можуть запускатися вручну за допомогою функції session_start(). Якщо директива session.auto_startустановлена в , сесія автоматично запуститься на початку запиту.

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

Приклад #1 Реєстрація змінної за допомогою $_SESSION

Loading...

Приклад #2 Скасування оголошення змінної за допомогою $_SESSION

Loading...

Застереження

НЕ ОЧИЩАЙТЕ$_SESSION повністю, використовуючи unset($_SESSION), так як це відключити можливість реєстрації сесійних змінних через супер глобальну змінну $_SESSION

Увага

Ви не можете використовувати посилання в сесійних змінних, так як немає реального способу відновлення посилання до іншої змінної.

Зауваження :

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

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