Accueil > Développement > Programmation > Les sessions en PHP

Les sessions en PHP

Ou comment conserver des informations d’une page à une autre.

lundi 3 juillet 2006, par Prélude

Introduit à partir de la version 4 du PHP, vous devez donc avoir la version 4.1.0 au moins afin de faire fonctionner correctement les exemples de cet article. Normalement, tout les hébergeurs ont au moins cette version.

Le principe

Les sessions permettent de conserver des informations côté serveur et de les utiliser ensuite à chaque fois qu’une page dynamique est créée. Ces informations sont propres à l’utilisateur. C’est-à-dire que chaque utilisateur dispose d’une session pouvant contenir plusieurs informations.

Contrairement aux cookies qui sont stockés côté client, les sessions sont stockées côté serveur. Evidement cela implique une sécurité accrue, mais en contre partie, cela demande d’avoir un peu plus la main sur les paramètres du serveur.

La durée de vie d’une session est définie au niveau serveur. Cette valeur peut-être consultée en utilisant la fonction phpinfo() puis, en consultant la ligne session.cache_expire.
Cette valeur est modifiable dans le fichier de configuration.

Création d’une session

Allez, c’est parti, voici le code permettant de démarrer une session :

<?php
session_start();
?>

Vous devez démarrer toutes vos pages dynamiques par cette commande. Elle est obligatoire sauf si la directive session.auto_start est à ON.

Les sessions sont alors sauvegardées dans un dossier. Vous pouvez consulter le nom de ce dossier en regardant la directive session.save_path dans le résultat d’un phpinfo().

Vous pouvez obtenir l’identifiant d’une session par la commande session_id().
Dans certains cas, notamment si votre jeu se trouve dans un sous domaine avec d’autres jeux, il est conseillé de nommer vous-même les sessions en utilisant la commande session_name() :

<?php
session_name('MonJeu');
session_start();
?>

Enregistrement d’informations dans la session

La session est crée, il faut maintenant enregistrer des informations dedans :

$_SESSION['s_Pseudo'] = $Pseudo;

Cette ligne permet d’enregistrer dans une variable de session le contenu de la variable $Pseudo.

Vous pouvez évidement enregistrer plusieurs informations :

$_SESSION['s_Pseudo'] = $Pseudo;
$_SESSION['s_Identifiant'] = $Id;
$_SESSION['s_Age'] = $Age;

Essayez de nommer vos variables de session d’une façon logique. Ici, nous utilisons s_ devant le nom de la variable. Ceci afin d’éviter de les mélanger avec d’autres variables suivant la configuration de votre serveur.

Lecture des informations d’une session

Vous voilà donc avec une session et pleins d’informations dedans. Voyons comment relire les variables :

$Pseudo = $_SESSION['s_Pseudo'];

Tout simplement en faisant l’inverse que pour l’enregistrement.

Effacement et suppression des sessions

Pour effacer une variable de session, vous pouvez utiliser la commande classique unset() :

unset($_SESSION['s_Pseudo']);
if(isset($_SESSION['s_Pseudo'])) {
        echo "erreur lors de la suppression.";
}else {
        echo "La variable a bien été supprimée.";
}

Pour enfin supprimer complètement une session (utile pour proposer au joueur de se déconnecter par exemple) :

session_destroy();

N’oubliez pas de placer en haut de chaque page la commande de création de votre session.