Les sessions PHP

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.
Une session est un mécanisme qui permet de garder temporairement en mémoire des valeurs dans un fichier stocké sur le serveur. Une session permet notamment de stocker des valeurs comme un mot de passe et pseudo lors d'une connexion à un espace membre ou plus simplement de faire circuler des informations de page en page.
La durée d'une session est définie par l'hébergeur (grosso modo 30 minutes. Voir du côté de la fonction phpinfo()) et peut être modifié sous condition d'avoir accès à certains paramêtres de configuration du serveur.

Ouvrir une session

Une session doit être déclaré avant tout envoie de code HTML et est généralement inséré en tout début de page :
<?php
//Ouverture d'une session
session_start();
?>

Déclarer une session :

On déclare une session en utilisant la variable $_SESSION[''] contant elle même le nom de la variable :
<?php
//Ouverture d'une session
session_start();
//On déclare une session
$_SESSION['nom_de_ma_variable'] = 'Héllo, je suis une variable de session!'; 
?>
Dans cet exemple, ma variable ce nomme : " nom_de_ma_variable " et à pour valeur le texte : " Héllo, je suis une variable de session! ". C'est à vous de choisir le nom que vous souhaitez donner à votre variable.

Afficher une variable de session

Pour afficher une variable de session, c'est tout simple! On effectue un simple "echo" de la variable :
<?php
//Ouverture d'une session
session_start();
//On déclare une session
$_SESSION['nom_de_ma_variable'] = 'Héllo, je suis une variable de session!'; 
//On affiche la valeur de la variable
echo $_SESSION['nom_de_ma_variable'];
?>

Supprimer une variable de session

Pour supprimer une variable de session, on utilise la fonction unset() auquel on passe en paramêtre la variable de session à détruire :
<?php
//Ouverture d'une session
session_start();
//On déclare une session
$_SESSION['nom_de_ma_variable'] = 'Héllo, je suis une variable de session!'; 
//On affiche la valeur de la variable
echo $_SESSION['nom_de_ma_variable'];
//On détruit la variable de session nom_de_ma_variable
unset($_SESSION['nom_de_ma_variable']);
?>
Pour supprimer l'intégralité d'une session on procède un peut différement en ré-écrivant le tableau de session puis en le détruisant :
<?php
//Ouverture d'une session
session_start();
//On déclare une session
$_SESSION['nom_de_ma_variable'] = 'Héllo, je suis une variable de session!'; 
//On affiche la valeur de la variable
echo $_SESSION['nom_de_ma_variable'];
//On réécrit le tableau
$_SESSION = array(); 
//On détruit le tableau réécrit
session_destroy(); 
?>

Exemple d'utilisation des variables de sessions

Nous allons voir concrètement et de façon simpliste comment fonctionne les variables de sessions, comment elles transites de page en page et comment on les détruits. Cet exemple rassemble un simple formulaire de connexion, 2 pages et la création des variables de sessions associées au formulaire. Le code qui suit est largement commenté et ce passera donc de commentaires en plus .

pageA.php :
<?php
//Ouverture de la session
session_start();
//Si l'action de valider a été faite
if(isset($_POST['submit'])){
	//les identifiants
	$pseudo = "toto";
	$pass = "titi";
	//On teste les identifiants
	if($_POST['pseudo'] == $pseudo AND $_POST['pass'] == $pass){
		//On créé les sessions
		$_SESSION['pseudo']=$_POST['pseudo'];
		$_SESSION['pass']=$_POST['pass'];
	}
	else{
		echo 'Mot de passe ou pseudo invalide!';
	}
}
//Si les 2 sessions existes
if(isset($_SESSION['pseudo']) AND isset($_SESSION['pass'])){
//On affiche ce que l'on veut
	echo 'Vous êtes identifié sous le pseudo <b>'.$_SESSION['pseudo'].'</b> avec 
comme mot de passe <b>'
.$_SESSION['pass'].'</b> '; //Lien vers une autre page echo '<a title="Page suivante" href="pageB.php">Page suivante</a><br/>'; //Lien de déconnexion echo '<a title="Déconnexion" href="?deconnexion=close">Déconnexion</a><br/>'; //Pour le fun, on affiche le tableau des sessions echo '<b>Tableau des sessions en cours :</b><br/><pre>'; print_r($_SESSION); echo '</pre>'; //Si la variable déconnexion existe et qu'elle correspond if(isset($_GET['deconnexion']) AND $_GET['deconnexion']=="close"){ //on réécrit le tableau $_SESSION = array(); //on détruit le tableau réécrit session_destroy(); //on redirige header('Location: pageA.php'); exit(); } } //Juste pour tester que les variables de sessions sont vides, on affiche le formulaire if(empty($_SESSION['pseudo']) AND empty($_SESSION['pass'])){ ?> <form id="connexion" method="post" action="#"> <label for="pseudo">Pseudo :</label> <input type="text" id="pseudo" name="pseudo" /><br/> <label for="pass">Mot de Passe :</label> <input type="password" id="pass" name="pass" /><br/> <input type="submit" id="submit" name="submit" value="Connexion" /> </form> <?php } ?>
pageB.php :
<?php
//Ouverture de la session
session_start();
//si les 2 sessions existes
if(isset($_SESSION['pseudo']) AND isset($_SESSION['pass'])){
	echo 'Vous êtes identifié sous le pseudo <b>'.$_SESSION['pseudo'].'</b> avec 
comme mot de passe <b>'
.$_SESSION['pass'].'</b> '; echo '<a title="Page précédente" href="pageA.php">Page précédente</a><br/>'; } else{ echo 'Vous devez être connecté pour avoir accès à cette page!'; } ?>
Pour les utilisateur de "Free.fr" et pour utiliser les sessions, vous devez créer un dossier nommé sessions (au pluriel) à la racine de votre site par l'intermediaire de votre ftp.
Voir/déposer un commentaire (0) | Signaler un problème