Клас SessionHandler
(PHP 5 >= 5.4.0, PHP 7, PHP 8)
Вступ
SessionHandler це спеціальний клас, який може використовуватись для доповнення внутрішнього оброблювача сесій PHP шляхом створення дочірніх класів від цього. Існує сім методів, які є обгортками над сімома внутрішніми обробниками зберігання даних сесії (open
close
read
write
destroy
gc
иcreate_sid
). За умовчанням цей клас обертає всі внутрішні обробники сесії, визначені в опції конфігурації session.save_handler. За замовчуванням ця опція має значення files
Другие внутренние обработчики сессий предоставляются PHP-модулями, такими как SQLite (sqlite
), Memcache (memcache
) та Memcached (memcached
Екземпляр класу SessionHandler може встановлюватися як обробник сесії за допомогою виклику функції session_set_save_handler(). У цьому випадку він стане обгорткою існуючого внутрішнього оброблювача. Класи, що розширюють SessionHandler дозволять перевизначити методи оброблювача сесії або перехопити/відфільтрувати їх шляхом виклику батьківських методів-оберток внутрішнього оброблювача сесій PHP.
Це дозволить вам, наприклад, перехопити методи read
иwrite
для шифрування/дешифрування даних сесії та передачі результату батьківському класу та від нього. Або, наприклад, ви можете повністю перевизначити такий метод як callback-функція збирача сміття (gc
Так какSessionHandler є обгорткою над стандартним внутрішнім обробником сесії, то приклад, наведений вище про шифрування даних може бути застосований до будь-якого внутрішнього оброблювача сесії навіть без розуміння внутрішнього пристрою процесу сесії.
Для використання цього класу, по-перше, встановіть обробник, який ви хочете доповнити, використовуючи session.save_handler. Далі передайте екземпляр класу SessionHandler або одного з класів, що розширюють його функції session_set_save_handler()
Зверніть увагу, що callback-методи цього класу призначені для внутрішнього виклику PHP і не призначені для виклику з коду простору користувача. Значення, що повертаються однаково обробляються всередині PHP. Додаткову інформацію про роботу із сесією можна дізнатися з опису функції session_set_save_handler()
Огляд класів
class SessionHandler
implements
SessionHandlerInterface,
SessionIdInterface {
/* Методы */
public close(): bool
public create_sid(): string
public destroy(string $id): bool
public gc(int $max_lifetime): int|false
public open(string $path, string $name): bool
public read(string $id): string|false
public write(string $id, string $data): bool
}
Увага
Цей клас призначений для розширення поточного внутрішнього оброблювача сесії PHP. При цьому, якщо вам потрібно написати власний обробник, необхідно написати власну реалізацію інтерфейсу SessionHandlerInterfaceвместо расширения классаSessionHandler
Приклад #1 ИспользованиеSessionHandler** для того, щоб додати шифрування даних до внутрішнього оброблювача сесій PHP.**
Loading...
Зауваження :
Так як методи цього класу призначені для внутрішніх викликів з PHP, як частина нормального процесу роботи сесій, виклики батьківських методів із дочірнього класу (іншими словами "рідних" обробників) буде повертати
false
доти, доки сесія не буде запущена (автоматично або прямим викликом session_start()). Це важливий момент для розуміння, особливо під час тестування, де методи класу можуть бути викликані вручну.
Зміст
- SessionHandler::close - Закриває сесію
- SessionHandler::create_sid— Повертає новий ідентифікатор сесії
- SessionHandler::destroy - Знищує сесію
- SessionHandler::gc - Очищає старі сесії
- SessionHandler::open - Ініціалізує сесію
- SessionHandler::read— Зчитує дані сесії
- SessionHandler::write— Записує дані сесії