Клас 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()). Це важливий момент для розуміння, особливо під час тестування, де методи класу можуть бути викликані вручну.

Зміст