Easy-Micro

LANGAGE Langage PHP
Session PHP

Gestion des sessions en PHP

Variable $_SESSION[]

Les sessions sont adaptées à la sauvegarde de données. Au lieu de stocker vos informations chez le visiteur (par exemple avec des cookies), vous les stockez sur le serveur web. Techniquement, vous attribuez au visiteur un identifiant. Chaque fois qu'il reviendra en annonçant cet identifiant, Php récupérera toutes les informations sauvegardées dans une base de donnée relatives à ce visiteur.

session_start()

Une session s'initialise avec la fonction session_start() et se stocke dans la variable (super) globale $_SESSION['login']. session_start() doit absolument se trouver sur la première ligne du document!

Exemple d'ouverture de session (traitement.php). On imagine ici avoir réalisé un formulaire (index.php) avec un champ de texte 'login'. Voici le fichier qui est appelé depuis ce formulaire:
<?php
session_start();
// si le champ login existe et n'est pas vide
if ( (isset($_POST['login'])) && (!empty($_POST['login'])) ) {
     // affectation du contenu du champ à la variable de session
     $_SESSION['login'] = $_POST['login'];
     // et redirection vers la page de bienvenue (bienvenue.php)
     echo "<script>document.location=\"bienvenue.php\";</script>";
} else {
     // sinon, redirection vers le formulaire (index.php)
     echo "<script>document.location=\"index.php\";</script>";
}
?>

Exemple de lecture de session (bienvenue.php)
<?php
session_start();
// si la session n'existe pas, redirection vers index.php
if (!isset($_SESSION['login'])) {
echo "<script type='text/javascript'>alert('Accés interdit')</script>";
echo "<script type='text/javascript'>document.location=\"index.php\";</script>";
}
// sinon, on affiche le page bienvenue!
else { ?>
<html><body>
<?php echo "Bienvenue ".$_SESSION['login']."!"; } ?>
</body></html>

Chaque page concernée par les sessions doit avoir le même code que bienvenue.php. Pour afficher l'identifiant de session (SID), on utilise la fonction session_id() comme ceci: echo session_id();. Pour afficher le nom de la session : echo session_name();.

Déconnexion

Php efface la session de lui même mais si vous voulez supprimer une session, utilisez la fonction session_destroy();. Attention, pour utiliser les sessions chez Free, vous devez créer un dossier sessions à la racine de votre site.

Exemple de page de déconnexion (deconnexion.php)
<?php
@session_name("masessid");
session_start();
 
// Détruit toutes les variables de session
$_SESSION = array();
 
// pour détruire complètement la session, on efface également
// le cookie de session.
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
 
// on détruit la session
session_destroy();
 
@session_name("masessid");
//empeche d'avoir un id de session visible dans l'url
ini_set("url_rewriter.tags","");
ini_set("session.use_trans_sid", false);
session_start();
 
//redirection
if (!isset($_GET["page"])){$_GET["page"] = "candidat";}
header("Location: ../index.php?page=".$_GET["page"]);

Gestion de caddie

Exemple de gestion de caddie : Utiliser les variables de sessions pour gérer des commandes

Fichier qui fait le traitement d'un formulaire d'inscription : (traitement.php)
<?php
// création de session
$_SESSION['login'] = $_POST['nom'];
$nomvisiteur = $_POST['nom'] ;

// création du caddie avec une chaîne de caractère (et pas de chiffre!)
$_SESSION['caddie'] = "0";

// Création d'un Cookie pour éviter les re-connexion
$expiration = time()+(3600*24*30); // on fixe la date d'expiration à 30 jours
setcookie("identifiant",$nomvisiteur,$expiration,"/");

header('Location: index.php?mapage=boutique.php');

Exemple de gestion de caddie (boutique.php)
<?php
<h3>Pour le test, merci de <a href="index.php?mapage=inscription.html">vous  identifier</a></h3>
<ul>
<?php
echo "Votre identifiant: ".$_SESSION['login']."<br><br>";

for($i = 0; $i < 5; $i++) {
	$qte = 0;
	if (isset($_SESSION['caddie'][$i]))
		$qte = $_SESSION['caddie'][$i];
	else {
		$qte = 0;
		$_SESSION['caddie'][$i] = 0;
	}
}
?>
</ul>
<?php
$qte = 0;

if (isset($_GET['id'])) {
	$id = $_GET['id'];	
		
if (isset($_SESSION['caddie'][$id])) {
	$qte = $_SESSION['caddie'][$id];
	$qte = $qte + 1;
	$_SESSION['caddie'][$id] = $qte;
}
else {
	$_SESSION['caddie'][$id] = 0;
	}
}
echo "<ul>";
for($i = 0; $i < 5; $i++) {
	$qte = $_SESSION['caddie'][$i];
	echo '<li><a href="index.php?mapage=boutique.php&id='.$i.'" title="Commander"> Article'.$i.'</a> - Quantité : '.$qte.'</li>';
}
echo "</ul>";
?>

< Page précédente LANGAGE PHP Page suivante >