English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP Basic Tutorial

PHP Advanced Tutorial

PHP & MySQL

PHP Reference Manual

Sessions PHP

Dans ce tutoriel, vous apprendrez à utiliser PHP session pour stocker temporairement certaines données sur le serveur.

Qu'est-ce qu'une Session

Bien que vous puissiez utiliser des cookies pour stocker des données, ils présentent certains problèmes de sécurité. Puisque les cookies sont stockés sur l'ordinateur de l'utilisateur, les attaquants peuvent facilement modifier le contenu des cookies pour insérer des données potentiellement malveillantes dans votre application, ce qui pourrait endommager votre application.

En plus de cela, chaque fois que le navigateur fait une demande au serveur pour une URL, toutes les données de cookie du site sont automatiquement envoyées avec la requête au serveur. Cela signifie que si vous stockez5Cookies, chaque Cookie a une taille de4Ko, le navigateur doit télécharger20 Ko de données, ce qui pourrait affecter les performances de votre site.

Vous pouvez résoudre ces deux problèmes en utilisant PHP session. PHP session stocke les données sur le serveur plutôt que sur l'ordinateur de l'utilisateur. Dans un environnement basé sur les sessions, chaque utilisateur est identifié par un numéro unique appelé identificateur de session ou SID. Cet ID de session unique est utilisé pour relier chaque utilisateur à ses informations stockées sur le serveur (par exemple, e-mail, messages, etc.).

Astuce :L'ID de session est généré aléatoirement par le moteur PHP, ce qui rend difficile de le deviner. De plus, puisqu'il stocke les données de session sur le serveur, il n'est pas nécessaire de les envoyer avec chaque requête de navigateur.

Démarrer Session

Avant de stocker toute information dans une variable de session, vous devez d'abord démarrer la session. Pour commencer une nouvelle session, il suffit d'appeler la fonction PHP session_start(). Cela créera une nouvelle session et génèrera un ID de session unique pour l'utilisateur.

Le code PHP dans l'exemple suivant démarre une nouvelle session.

<?php
//Démarrer session
session_start();
?>

La fonction session_start() vérifie d'abord l'existence de l'ID de session pour voir si une session existe déjà. Si elle trouve une session, cela signifie que la session a déjà été démarrée, et elle configure les variables de session. Sinon, elle démarre une nouvelle session en créant un nouvel ID de session.

Attention :Vous devez appeler la fonction session_start() au début de la page (avant toute sortie générée par le script dans le navigateur), comme vous le feriez avec la fonction setcookie() pour définir un cookie.

Stockage et accès aux données de session

Vous pouvez stocker toutes les données de session sous forme de paires clé-valeur dans l'ensemble de correspondance universel $_SESSION[]. Vous pouvez accéder aux données stockées pendant la durée de vie de la session. Voir le script suivant, qui crée une nouvelle session et enregistre deux variables de session.

<?php
//Démarrage de la session en cours
session_start();
 
//Stockage des données de session
$_SESSION["firstname"] = "Peter";
$_SESSION["lastname"] = "Parker";
?>

Pour accéder aux données de session que nous avons définies sur n'importe quelle autre page du même domaine Web, il suffit d'appeler session_start() pour recréer la session, puis de passer la clé correspondante à l'ensemble de correspondance $_SESSION.

<?php
//Démarrage de la session en cours
session_start();
 
//Accéder aux données de session
echo 'Hi, ' . $_SESSION["firstname"] . ' ' . $_SESSION["lastname"];
?>

Le code PHP de l'exemple suivant produit le résultat suivant.

Hi, Peter Parker

Attention :Pour accéder aux données de session sur la même page, vous n'avez pas besoin de recréer la session, car elle a déjà été démarrée en haut de la page.

Détruire la session

Si vous souhaitez supprimer certaines données de session, il suffit de désétablir la clé correspondante de l'ensemble de correspondance $_SESSION, comme dans l'exemple suivant :

<?php
//Démarrer la session
session_start();
 
//Données de session en cours de suppression
if(isset($_SESSION["lastname"])){
    unset($_SESSION["lastname"]);
}
?>

Cependant, pour détruire complètement une session, il suffit d'appeler la fonction session_destroy(). Cette fonction n'a pas de paramètres et appelle une fois détruira toutes les données de session.

<?php
//Démarrer la session
session_start();
 
//Détruire la session
session_destroy();
?>

Attention :Avant de détruire une session à l'aide de la fonction session_destroy(), si l'environnement de session n'existe pas encore, vous devez d'abord recréer cet environnement de session à l'aide de la fonction session_start() afin de pouvoir le détruire.

Chaque session PHP a une valeur de délai d'expiration (durée, en secondes), qui détermine le temps pendant lequel la session doit rester active en l'absence d'activité utilisateur. Vous pouvez ajuster ce délai d'expiration en modifiant la valeur de la variable session.gc_maxlifetime dans le fichier de configuration PHP (php.ini).