Les sessions

Les sessions permettent de passer des variables de pages en pages, ou de conserver certaines informations pendant la durée d'une visite sur un site.

Fonctionnement

Une session est un fichier conservé sur le serveur et accessible par vos scripts PHP en fonction d'un identifiant généré à la création. Chaque fois qu’un internaute génère une session, un identifiant lui est attribué. Tout ce qui est dans cette session est accessible de partout par vos scripts PHP. On comprend dès lors très vite l'intérêt des sessions. En effet, si chaque session est propre à un visiteur, on peut personnaliser nos scripts en fonction du visiteur, ou encore alléger nos requêtes : plutôt que d'aller chercher un pseudonyme dans la base de données sur chaque page, vous le rapatriez à l'arrivée du visiteur sur le site, vous le stockez en session et c'est de là que vous y accéderez par la suite.

La session étant stockée sur le serveur, elle est plus sécurisée qu'un cookie. Contrairement au cookie, la session n'est valable qu'un temps limité (aux alentours de 30 minutes, selon la configuration de votre serveur), et est automatiquement détruite à la fermeture du navigateur du visiteur.
Vous pouvez enregistrer en session tout type de variable : du simple numérique au tableau en passant par la chaîne de caractères.

Il existe plusieurs fonctions liées aux sessions, mais deux seulement sont essentielles à leur fonctionnement, ainsi qu'une variable de type tableau :

session_start();

Cette fonction sert à démarrer une session ou à rafraichir la session existante. Elle doit donc être présente sur toutes les pages utilisant ces variables. Attention : cette fonction doit être écrite tout en haut de la page, avant même la balise <!doctype html>, sinon vous aurez un message d’erreur.

session_destroy();

Cette fonction détruit la session en cours. Mais elle ne détruit pas les variables de sessions associées. L'effacement du tableau de session solutionnera ce problème, voir exemple en bas de la page.

Utilisation du tableau global $_SESSION

Il s'agit du tableau global contenant toutes les variables de sessions pour la session courante. Son utilisation est exactement identique aux tableaux habituels.

<?php
// On démarre la session avant toute balise
session_start();
// Nous allons créer une variable de session nommée "prenom" qui contient "Roger" :
$_SESSION['prenom'] = 'Roger';
?>
<!doctype html>
<html>
	<body>
		<p>Voici la valeur de la variable de session prenom :
		<?php
		// Nous pouvons maintenant afficher la variable "prenom"
		echo $_SESSION['prenom'];  // Ceci va afficher Roger
		?>
		</p>
	</body>
</html>

Détruire une session (déconnexion)

Il s'agit là d'un point important. En effet une session reste ouverte tant que le visiteur ne ferme pas son navigateur. Vous devez lui offrir la possibilité de se déconnecter d'une autre manière. Il vous suffit en fait de faire un lien appelé par exemple Déconnexion qui pointe sur un script contenant ceci :

<?php
// On appelle la session
session_start();
// On vide toutes les variables de session
$_SESSION = array();
// On détruit la session
session_destroy();
?>

Vous connaissez l'essentiel sur les sessions. Faites-en bon usage...