Les SESSIONS

Quand un site web devient de plus en plus sophistiqués, il doit avoir un code qui suit. Lorsque vous arrivez à un stade où votre site web nécessite de transmettre des informations importantes et confidentiels sur l'utilisateur d'une page à l'autre, alors c'est qu'il est temps de commencer à penser sur l'utilisation des sessions PHP.

Une session en PHP vous permet de stocker des informations de l'utilisateur sur le serveur (son panier, ses identifiants de connexion par exemple) ce qui offre un haut niveau de sécurité, à l'inverse des cookies qui stockent les informations directement sur le poste du client. Toutefois, une session est temporaire et est effacé très rapidement du serveur. Le temps moyen est de 30 minutes par défaut.

Il est important de réfléchir si les sessions de stockage temporaire sont applicables à votre site. Si vous avez besoin d'un stockage permanent, vous devriez trouver une autre solution, comme une base de données MySQL.

L'utilisation des sessions pour une identification de visiteur ou un stockage temporaire permet d'éviter aux données des utilisateurs de se confondre lors de la visite de la même page web.

A noter: Un site web ou simplement une page complètement protégée par une session (administration, espace membre..) ne sera pas indexée par les moteurs de recherches.

Sommaire :

Comment fonctionne une session ?
Les informations sont stockées dans des fichiers, sur le serveur, à chaque session correspond un fichier. Chaque session est désignée par un nom et un identifiant. Lorsque le visiteur accepte les cookies, l'identifiant de la session est stocké dans un cookie, dans le cas contraire, il existe un autre moyen de stocker l'identifiant. Normalement, la session est détruite ou à la fermeture du navigateur, ou au bout de 30 minutes. Cette valeur peut être modifiée dans le fichier php.ini du serveur.
Des exemples
Nous allons voir comment utiliser les sessions dans une suite d'exemple et de bouts de code.
Démarrer une session

Syntaxe :

.01
.02
 
<?php session_start(); ?>

Ce code permet de démarrer une session. Si un fichier existe sur le serveur pour cette session, les variables de sessions seront récupérées, si ce n'est pas le cas, un nouveau fichier sera créé.

Notez que code est à placer tout au début de votre page, avant tout code HTML, car la session ne peut être démarrée que si le cache du navigateur est vide.

Créer une variable de session :
Les variables de sessions sont accessibles, une fois que la sessions est démarrée, via un tableau
super global : $_SESSION
.01
.02
 
<?php $_SESSION['variable'] = $valeur ; ?>

Nous créons ici une variable de session nommée variable qui vaut $valeur

Pour savoir si la variable de session variable existe:
.01
.02
.03
.04
.05
.06
 
<?php

 
if(isset($_SESSION['variable']))
  echo
'La variable "variable" existe !';
?>




Utiliser la valeur d'une variable de session :
Si vous voulez utiliser la valeur d'une variable de session, vous devez passez par $_SESSION
.01
.02
.03
.04
.05
.06
 
<?php
     
     
if(isset($_SESSION['variable']))
      echo
'La variable "variable" existe et vaut: ' . $_SESSION['variable'];
?>




Supprimer une variable de session :
Pour supprimer une variable de session, il faut utiliser la fonction unset()
.01
.02
.03
.04
.05
.06
 
<?php

 
unset($_SESSION['variable']);
  echo
'La variable de session "variable" est maintenant détruite';
?>




Détruire toutes les variables de session :
La fonction session_unset() détruit toutes les variables de session
Syntaxe :
.01
.02
 
<?php session_unset(); ?>



Détruire une session
La fonction session_destroy() permet de détruire une session mais souvent cela ne suffit pas, voici toute les fonctions qui vous permettrons de détruire une session et d'en démarrer une nouvelle.
Syntaxe :
.01
.02
.03
.04
.05
.06
.07
.08
 
<?php
    session_unset
();
   
session_destroy();
   
session_write_close();
   
setcookie(session_name(),'',0,'/');
   
session_regenerate_id(true);
?>


Rappel :
La session doit être déclarée dans le code tout en haut de votre page car le cache du navigateur doit être vide pour démarrer une session.