Leçon 12 : Les sessions

Lorsque l'on visite un site web, on exerce différentes actions. On clique d'une page vers une autre. On remplit éventuellement un formulaire, ou achète un article.

En tant que développeur web, ces informations sont de première importance pour la mise en œuvre réussie de solutions web.

Supposons, par exemple, que vous vouliez que l'accès à certaines pages de votre site soient protégé par un identifiant et un mot de passe. Pour une protection efficace, les pages protégées par un mot de passe devraient disposer de l'information selon laquelle l'utilisateur s'est déjà identifié ou non. Autrement dit, vous devez pouvoir "garder la mémoire" de ce que l'utilisateur a fait auparavant.

C'est exactement le sujet de cette leçon : comment utiliser les sessions dans PHP pour stocker et récupérer des informations au cours de la visite de l'utilisateur sur votre site.

Les sessions

La documentationsession PHP vous permet de gérer les informations concernant la session de l'utilisateur.

Une session peut commencer de différentes façons. Nous n'entrerons pas ici dans des détails techniques mais nous concentrerons sur le cas où la session commence par une valeur à stocker. Une session s'achève ou meurt si l'utilisateur n'a pas demandé de pages pendant une certaine durée (habituellement 20 minutes). Vous pouvez bien entendu terminer ou tuer une session dans votre script.

Admettons que 50 personnes cliquent dans le même site, par exemple un commerce en ligne, au même instant. Il vaudrait mieux que les informations concernant ce que chacun a mis dans son panier soient stockées dans une session. Pour identifier les utilisateurs individuels, le serveur utilise un identificateur d'utilisateur unique stocké dans un cookie. Un cookie est un petit bout de texte stocké sur l'ordinateur de l'utilisateur (plus de renseignements sur les cookies dans la leçon 13). C'est pourquoi les sessions nécessitent souvent d'activer les cookies dans le navigateur de l'utilisateur.

Un exemple d'utilisation de sessions

Lorsque vous avez appelé cette même page, j'ai stocké l'heure courante dans une session. Ceci afin de pouvoir vous démontrer maintenant comment fonctionne une session.

J'ai nommé cet élément "StartTime" et l'ai stocké en ajoutant la ligne suivante dans mon script PHP :


	<?php

	session_start();
	$_SESSION["StartTime"] = date("r");

	?>

	

Une session a été commencée de cette manière. Comme décrit ci-dessus, chaque session reçoit du serveur un identificateur.

Votre session a l'identificateur suivant : grh158fcpsvrbeadqucnpf3up5

À chaque instant, je peux appeler l'élément "StartTime" de la session en écrivant :


	<?php

	session_start();
	echo $_SESSION["StartTime"];

	?>

	

Ce qui révèlerait que la page a été appelée à Sat, 27 Jul 2024 06:48:06 +0000 (d'après l'horloge du présent serveur web).

Ce qui est intéressant est que l'information reste dans la session, même après que vous aurez quitté cette page. L'information vous suivra jusqu'à ce que votre session s'achève.

Par défaut, une session dure jusqu'à ce que l'utilisateur quitte le navigateur. Si vous souhaitez arrêter une session, on peut toujours la tuer de cette manière :


	<?php

	session_destroy();

	?>

	

Voyons un autre exemple d'utilisation des sessions : une solution à mot de passe.

Système d'identification par sessions

Dans l'exemple suivant, nous réaliserons un système d'identification très simple. Nous utiliserons nombre de choses apprises dans les leçons précédentes.

La première chose dont nous avons besoin c'est un formulaire dans lequel les personnes peuvent saisir leur nom d'utilisateur et leur mot de passe. Quelque chose comme ceci :


	<html>
	<head>
	<title>Login</title>

	</head>
	<body>
	<form method="post" action="login.php">

	<p>Username: <input type="text" name="username" /></p>
	<p>Password: <input type="text" name="password" /></p>

	<p><input type="submit" value="Let me in" /></p>

	</form>
	</body>
	</html>


	

Nous créons ensuite le fichier : login.php.

Dans celui-ci, nous vérifions si le nom d'utilisateur et le mot de passe qui ont été saisis concordent. Si c'est le cas, nous établissons une session indiquant que l'utilisateur s'est identifié avec un nom d'utilisateur et un mot de passe corrects.

	<html>

	<head>
	<title>Login</title>

	</head>
	<body>

	<?php

	// Check if username and password are correct
	if ($_POST["username"] == "php" && $_POST["password"] == "php") {

	// If correct, we set the session to YES
	  session_start();
	  $_SESSION["Login"] = "YES";
	  echo "<h1>You are now logged correctly in</h1>";
	  echo "<p><a href='document.php'>Link to protected file</a><p/>";

	}
	else {

	// If not correct, we set the session to NO
	  session_start();
	  $_SESSION["Login"] = "NO";
	  echo "<h1>You are NOT logged correctly in </h1>";
	  echo "<p><a href='document.php'>Link to protected file</a><p/>";

	}

	?>

	</body>
	</html>


	

Dans les fichiers protégés, nous vérifions si l'utilisateur est correctement identifié. Dans le cas contraire, il est renvoyé au formulaire d'identification. Voici comment fonctionne la protection :


	<?php

	// Start up your PHP Session
	session_start();

	// If the user is not logged in send him/her to the login form
	if ($_SESSION["Login"] != "YES") {
	  header("Location: form.php");
	}

	?>

	<html>
	<head>
	<title>Login</title>
	</head>

	<body>
	<h1>This document is protected</h1>

	<p>You can only see it if you are logged in.</p>
	</body>
	</html>

	

Vous connaissez désormais l'objet Session. Dans la prochaine leçon, nous restons dans le même domaine et examinons de plus près les cookies.



<< Leçon 11 : Passer des variables dans des formulaire

Leçon 13 : Les cookies >>

cron