Introduction
La classe SessionHandler est une classe spéciale
qui peut ĂȘtre utilisĂ©e pour exposer le gestionnaire de sauvegarde
de session courant en interne de PHP, par héritage. Il y a sept méthodes
qui représentent les sept fonctions de rappel du gestionnaire de sauvegarde
de session interne (open, close,
read, write,
destroy, gc et
create_sid). Par défaut, cette classe va représenter ce qui
est défini dans le gestionnaire de sauvegarde interne, tel que défini par la directive
de configuration session.save_handler,
qui vaut habituellement files par défaut. D'autres
gestionnaires de sauvegarde de session interne sont fournis par des
extensions PHP, comme SQLite (avec le paramĂštre sqlite),
Memcache (avec le paramĂštre memcache), et Memcached (avec
le paramĂštre memcached).
Lorsqu'une instance complÚte de SessionHandler est définie comme
gestionnaire de sauvegarde en utilisant session_set_save_handler(), elle
remplacera le gestionnaire de sauvegarde courant. Une classe étendue depuis la classe
SessionHandler permet d'écraser les méthodes, de les intercepter,
ou de les filtrer en appelant la méthode de la classe parent qui remplace en dernier lieu
le gestionnaire de session interne de PHP.
Ceci permet, par exemple, d'intercepter les méthodes read et
write pour chiffrer/déchiffrer les données de session, et de passer
le résultat à la classe parente. Alternativement, il est possible d'aussi choisir d'écraser
totalement une méthode comme la fonction de rappel de collection des gabarits
gc.
En raison du fait que la classe SessionHandler se comporte comme les
méthodes du gestionnaire courant de sauvegarde de sessions interne, l'exemple ci-dessus de chiffrement
peut ĂȘtre appliquĂ© Ă n'importe quel gestionnaire de sauvegarde sans avoir besoin de connaĂźtre
les gestionnaires internes.
Pour utiliser cette classe, il faut commencer par définir un gestionnaire de sauvegarde
que l'on souhaite exposer en utilisant session.save_handler
puis, passer une instance de la classe SessionHandler ou une étendue à la
fonction session_set_save_handler().
Veuillez noter que les mĂ©thodes de rappel de cette classe sont destinĂ©es Ă ĂȘtre appelĂ©es
en interne par PHP, et ne sont pas prĂ©vues pour ĂȘtre appelĂ©es depuis le code de l'espace
utilisateur. Les valeurs retournĂ©es seront utilisĂ©es de la mĂȘme façon en interne par PHP.
Pour plus d'informations sur le mécanisme des sessions, se référer à la documentation
sur la fonction session_set_save_handler().