Session (informatique)

Un article de Wikipédia, l'encyclopédie libre.

En informatique, une session est l'exécution d'un programme pour un utilisateur donné. L'exécution du programme est alors paramétrée par les informations du profil de l'utilisateur (ses caractéristiques, ses préférences, l'historique de ses interactions avec le programme, etc.)

Sommaire

[modifier] Déroulement d'une session

Une session démarre lorsque l'utilisateur commence à interagir avec un programme.

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).
  • 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, hormis les cas où l'on a une demande volontaire d'arrêt de la session (telle une déconnexion), l'utilisateur peut toujours laisser le programme en cours de session et 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, la session est invalidée.

[modifier] 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.

[modifier] Utilisation des sessions

L'informatique fait souvent appel à la notion de session :

  • Dans les protocoles réseaux, on peut citer l'exemple des sessions HTTP qui permettent de réaliser des applications web au dessus du protocole HTTP. A 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.

[modifier] Sessions PHP

Les sessions sont indispensables dès qu'un site comporte une partie membres. Elle sont plus sécurisées que les cookies. 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 êtres 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.

Les variables de sessions sont stockées dans un tableau PHP simple appelé $_SESSION[].

Voici comment définir une variable de session :

$_SESSION['id']    = $variable;

Les variables de sessions se récupèrent ainsi :

$variable = $_SESSION['id'];

Voici une méthode sûre afin de détruire une session en cas de déconnexion (manuelle ou forcée) :

$_SESSION = array();           //Ecrase les variables de sessions en recréant un tableau vide
session_destroy();             //Supprime le fichier serveur de la session

Les fichiers de sessions sauvegardés sur le serveur ont ce format :

> Nom du fichier > sess_fe089db4fa4f15978286da2432db9ab3
> Contenu > id|i:1;name|s:6:"Didjor";

Regardons de plus près ce qui définit une variable de session :

> Name|Type:Char_nb:Value;
Name 
Nom de la variable superglobale
Type 
Type de données. i représente integer et s string
Char_nb 
Nombre de caractères de la variable
Value 
Valeur de la variable. Elle est entre guillemets si son type est String

[modifier] Liens internes

[modifier] Liens Externes