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 des 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.
To Top