Gestion des sessions

Introduction

Le support des sessions de PHP est un moyen de préserver des données entre plusieurs accÚs.

Chaque visiteur accĂ©dant Ă  la page web se voit assigner un identifiant unique, appelĂ© "identifiant de session". Il peut ĂȘtre stockĂ© soit dans un cookie, soit propagĂ© dans l'URL.

Le support des sessions permet de stocker des donnĂ©es entre les requĂȘtes dans le tableau superglobal $_SESSION. Lorsqu'un visiteur accĂšde au site, PHP va vĂ©rifier automatiquement (si session.auto_start est activĂ©) ou sur demande (explicitement avec session_start()) s'il existe une session du mĂȘme nom. Si c'est le cas, l'environnement prĂ©cĂ©demment sauvĂ© sera recréé.

Attention

Si l'on active session.auto_start alors le seul moyen de mettre des objets en session est de charger les définitions de classe avec auto_prepend_file dans lequel on charge les définitions dont on a besoin, ou bien il faudra utiliser serialize() sur l'objet, et unserialize() pour le récupérer.

La variable $_SESSION (et toutes les variables enregistrées) sont sérialisées en interne par PHP en utilisant le gestionnaire de sérialisation spécifié par l'option de configuration session.serialize_handler, aprÚs l'exécution du script PHP. Les variables qui sont indéfinies sont marquées comme telles. Lors des accÚs ultérieurs, elles ne seront pas définies, jusqu'à ce que l'utilisateur le fasse.

Avertissement

En raison du fait que les donnĂ©es de session sont sĂ©rialisĂ©es, les variables de type resource ne peuvent ĂȘtre stockĂ©es dans une session.

Les gestionnaires de sĂ©rialisation (php et php_binary) hĂ©ritent des limitations de register_globals. Aussi, les index numĂ©riques ou les index sous forme de chaĂźnes de caractĂšres contenant des caractĂšres spĂ©ciaux (| et !) ne peuvent pas ĂȘtre utilisĂ©s. Le fait de les utiliser gĂ©nĂšrera des erreurs en fin de script. php_serialize n'a pas ce genre de limitations.

Note:

Il est à noter que lorsque l'on travaille avec les sessions, un enregistrement dans la session ne sera pas créé tant que la variable ne sera pas enregistrée en ajoutant une clé à la variable super-globale $_SESSION. Cela n'est vrai que si l'on a débuté une session en appelant la fonction session_start().

add a note

User Contributed Notes

There are no user contributed notes for this page.