Développement web avancé

Sessions - PHP

2526 · Dekens Antoine

Cookies

Les cookies sont un mécanisme d'enregistrement d'informations sur le client, et de lecture de ces informations. Ce système permet d'identifier et de suivre les visiteurs.

Ne pas utiliser les cookies pour sauvegarder des données sensibles (adresse mail, mot de passe, etc.).

Ajouter un cookie

La fonction setcookie( ) permet de définir un nouveau cookie en lui passant à minima 2 paramètres :

  • name : le nom de la valeur à enregistrer
  • value : la valeur à stocker sous forme de string
<?php 
  // Enregistre la préférence d'un thème sombre
  setcookie( 'theme', "dark" );
?>

Lire les données

Une fois qu'on a ajouté un cookie, il devient accessible via la superglobale $_COOKIES en passant le bon nom.

<?php 
  // Permet d'accèder au cookie 'theme'
  echo $_COOKIE[ 'theme' ];
?>

Effacer les données

Pour supprimer une donnée, il suffit de passer le nom d'un cookie existant et de lui attribuer une chaîne de caractère vide :

<?php 
  setcookie( 'theme', "" );
?>

Session

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.

Démarrer une session

Démarre une nouvelle session ou reprend une session existante, cela nous donne accès à la superglobale $_SESSION.

Les sessions ont une durée de vie, une fois cette durée atteinte on perd les informations liées à cette session.
<?php
  // Lance ou reprend une session trouvée sur le serveur
  // et permet d'accèder aux informations de la superglobale $_SESSION
  session_start();
?>

$_SESSION

Une fois qu'une session est démarrée / reprise, nous pouvons accèder en lecture ou en écriture aux données du tableau assossiatif qu'est $_SESSION. Cela nous permettra d'accèder à cette information sur toute les pages commençant par session_start( ).

<?php
  session_start();

  // Stocke l'ID d'un produit
  $_SESSION[ 'productId' ] = 10;

  // Affiche l'information ici, ou sur une autre page
  echo $_SESSION[ 'productId' ];
?>

unset

La fonction unset peut servir à supprimer une valeur :

<?php
  session_start();

  // Détruit l'information 'productId'
  unset( $_SESSION[ 'productId' ] );

  // Efface toute les variables
  $_SESSION = [];
?>              

Terminer une session

Il est possible de mettre fin manuellement à une session via la fonction session_destroy( ). Cela détruit toutes les données associées à la session courante.

Ne supprime pas les variables globales associées ou les cookies.
<?php
  session_start();

  […]

  session_destroy();
?>              

Expiration d'une session

Les informations d'une session ont une durée de vie, que ce soit pour les cookies ou pour les données de sessions côté serveur. Il est possible de définir la durée via la fonction init_set :

<?php
  // TTL = time to live
  $sessionTTL = 2 * 60 * 60; // 2 heures de session
  init_set( 'session.cookies_lifetime', $sessionTTL );
  init_set( 'session.gc_maxlifetime', $sessionTTL );

  session_start();
?>              

Tutoriel

Dans la prochaine slide je vous partage une vidéo produite par Grafikart qui explique les sessions et les cookies en PHP :

1/4

1/1