# 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().

- Installation/Configuration
  - Pré-requis
  - Installation
  - Configuration à l'exécution
- Constantes pré-définies
- Exemples
  - Utilisation simple
  - Passer l'identifiant de session (session ID)
  - Gestion personnalisée des sessions
- Progression d'un téléversement (upload) en session
- Sessions et Sécurité
  - Gestion basique des sessions
  - Sécurisation des configurations INI de session
- Fonctions Session
  - session_abort — Abandonne les changements sur le tableau de session et termine la session
  - session_cache_expire — Récupère et/ou définit le délai d'expiration du cache
  - session_cache_limiter — Lit et/ou modifie le limiteur de cache de session
  - session_commit — Alias de session_write_close
  - session_create_id — Créer un nouvel ID de session
  - session_decode — Décode les données encodées de session
  - session_destroy — Détruit une session
  - session_encode — Encode les données de session
  - session_gc — Exécute le ramasse miette des données de session
  - session_get_cookie_params — Lit la configuration du cookie de session
  - session_id — Lit et/ou modifie l'identifiant courant de session
  - session_module_name — Lit et/ou modifie le module de session courant
  - session_name — Lit et/ou modifie le nom de la session
  - session_regenerate_id — Remplace l'identifiant de session courant par un nouveau
  - session_register_shutdown — Fonction de fermeture de session
  - session_reset — Réinitialise le tableau de session avec les valeurs originales
  - session_save_path — Lit et/ou modifie le chemin de sauvegarde des sessions
  - session_set_cookie_params — Modifie les paramètres du cookie de session
  - session_set_save_handler — Configure les fonctions de stockage de sessions
  - session_start — Démarre une nouvelle session ou reprend une session existante
  - session_status — Détermine le statut de la session courante
  - session_unset — Détruit toutes les variables d'une session
  - session_write_close — Écrit les données de session et ferme la session
- SessionHandler — La classe SessionHandler
  - SessionHandler::close — Ferme la session
  - SessionHandler::create_sid — Retourne un nouvel ID de session
  - SessionHandler::destroy — Détruit une session
  - SessionHandler::gc — Nettoie les anciennes sessions
  - SessionHandler::open — Initialise une session
  - SessionHandler::read — Lit les données de session
  - SessionHandler::write — Écrit des données dans la session
- SessionHandlerInterface — L'interface SessionHandlerInterface
  - SessionHandlerInterface::close — Ferme la session
  - SessionHandlerInterface::destroy — Détruit une session
  - SessionHandlerInterface::gc — Nettoie les vieilles sessions
  - SessionHandlerInterface::open — Initialise la session
  - SessionHandlerInterface::read — Lit les données de session
  - SessionHandlerInterface::write — Écrit les données de session
- SessionIdInterface — L'interface SessionIdInterface
  - SessionIdInterface::create_sid — Créer un ID de session
- SessionUpdateTimestampHandlerInterface — L'interface SessionUpdateTimestampHandlerInterface
  - SessionUpdateTimestampHandlerInterface::updateTimestamp — Mettre à jour l'horodatage
  - SessionUpdateTimestampHandlerInterface::validateId — Valider l'ID

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open