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 :