# Session (informatique)

En informatique et en télécommunication, une session est une période délimitée pendant laquelle un appareil informatique est en communication et réalise des opérations au service d'un client - un usager, un logiciel ou un autre appareil.

## Déroulement d'une session

Une session démarre lorsque l'utilisateur commence à interagir avec un programme logiciel, qu'il s'agisse d'un système d'exploitation (OS), d'une application lourde ou à travers un site internet.
Plusieurs sessions peuvent donc être 'imbriquées' l'une dans l'autre, une session ouverte sur un site internet se faisant elle-même au sein d'une session ouverte sous l'OS.
L'ouverture de session peut être :
* Explicite, avec une saisie d'un nom et d'un mot de passe. On parle alors d'authentification ou de connexion.
** Cette authentification peut toutefois être automatisée, lorsqu'un mécanisme particulier remplace l'utilisateur en indiquant par exemple à sa place ses informations de connexion. C'est le cas par exemple lorsque l'on démarre une sous-session (on peut bénéficier de l'authentification principale), ou que l'ordinateur a enregistré par exemple sous forme de cookies les clés de connexion précédemment saisies.
* Implicite, lorsqu'il n'y a pas besoin d'indiquer un identifiant ou un mot de passe. Ce type de session est bien souvent limitée en termes de droits et donc d'effets.
Selon toute logique, une session devrait se terminer lorsque l'utilisateur arrête de se servir du système. En pratique, même lorsque le système dispose d'un mécanisme d'arrêt explicite de la session (telle une déconnexion), l'utilisateur peut toujours laisser le programme 'ouvert' en cours de session pour revenir par la suite. Cela n'est pas sans poser des problèmes, notamment en matière de sécurité. Le concepteur du programme peut alors imposer un temps limite d'inactivité ou une échéance : passé un certain temps, soit la session est terminée, soit elle exige à nouveau l'entrée du mot de passe.

## Informations de sessions

Les informations de session sont conservées dans un profil de l'utilisateur (en général, un ensemble de variables). Elles peuvent être fugaces ou stockées à moyen/long terme dans un ensemble de fichiers, d'entrées dans une base de données, etc. Elles sont soit chargées à l'ouverture de session, et mises à jour à la fin, soit dynamiquement pendant les interactions.
Certaines informations sensibles de la session doivent être isolées et/ou protégées par des droits d'accès, tandis que d'autres peuvent être partagées par plusieurs profils.

## Utilisation des sessions

L'informatique fait souvent appel à la notion de session :
* Dans les systèmes d'exploitation multi-utilisateurs. Elles permettent à chacun de travailler indépendamment des autres dans des processus distincts, avec ses propres variables d'environnement, et des droits différents.
* Dans les protocoles réseaux, on peut citer l'exemple des sessions HTTP ou HTTPS, qui permettent de réaliser des applications web au-dessus du protocole HTTP. À la première visite d'une page, un serveur web demande au client de conserver un cookie de session, qui contient un simple identifiant. Lorsque l'utilisateur passe sur une autre page du site, le cookie est envoyé au serveur web en même temps que la requête HTTP : le serveur web peut alors retrouver la session d'un utilisateur grâce à l'identifiant stocké dans le cookie.

## Exemples particuliers

Les sections suivantes présenteront des cas particuliers de gestion de session afin de donner un aperçu des utilisations possibles. Sachant que la problématique des sessions est aujourd'hui dominée par les applications offertes sur les réseaux et notamment les applications Web passant par les navigateurs, les exemples sont donc liés à des langages destinés à la construction de sites ou d'applications Web.

### Sessions en script PHP

Les sessions sont indispensables dès qu'un site comporte une partie « membres ». Elles permettent de garder en mémoire sur le serveur chaque personne, identifiée ou non, visitant le site. Les fonctions de sessions doivent toujours être appelées avant l'écriture de code HTML. Ainsi, la première chose conseillée à faire sur chaque page PHP est : session_start;.
Les variables de sessions sont appelées variables superglobales, car elles sont toujours là, même si la page est rechargée par le serveur. Les sessions ont un temps de vie défini par le serveur. Ce temps varie généralement entre 5 et 30 minutes mais reste une moyenne.
Les variables de sessions sont stockées dans un tableau PHP simple appelé $_SESSION.
Voici comment définir une variable de session :
Les variables de sessions se récupèrent ainsi :
Voici une méthode sûre afin de détruire une session en cas de déconnexion (manuelle ou forcée) :
Les fichiers de sessions sauvegardés sur le serveur ont ce format :
Regardons de plus près ce qui définit une variable de session :

#### Name

    Nom de la variable superglobale

#### Type

    Type de données. La valeur i représente integer (nombre) et s string (chaîne de caractères).

#### Char_nb

    Nombre de caractères de la variable

#### Value

    Valeur de la variable. Elle est entre guillemets si son type est String