Gestion des sessionsSessions
&reftitle.intro;
Le support des sessions de PHP est un moyen de préserver
des données entre plusieurs accès.
Chaque visiteur accédant à votre 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 vous permet de stocker des données
entre les requêtes dans le tableau super-globale $_SESSION.
Lorsqu'un visiteur accède à votre site, PHP va vérifier automatiquement (si
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éé.
Si vous activez
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 vous chargez les définitions dont vous avez besoin,
ou bien vous devrez utiliser serialize
sur votre 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.
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.
Notez que lorsque vous travaillez 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 vous avez débuté une
session en appelant la fonction session_start.
&reference.session.setup;
&reference.session.constants;
&reference.session.examples;
&reference.session.upload-progress;
&reference.session.security;
&reference.session.reference;
&reference.session.sessionhandler;
&reference.session.sessionhandlerinterface;
&reference.session.sessionidinterface;
&reference.session.sessionupdatetimestamphandlerinterface;