Easy-Micro


LANGAGE Langage PHP
Session PHP

Gestion des sessions en PHP

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.

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 type='text/javascript'>document.location=\"bienvenue.php\";</script>";
} else {
// sinon, redirection vers le formulaire (index.php)
echo "<script type='text/javascript'>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();. 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 deconnexion (deconnexion.php)
<?php
// page deconnexion.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"]);

?>

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)

<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;
}
}

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>';
}
?>


Suivez les aventures des skippers aquitains sur EasyVoile.com
Flux RSS Easy-Micro - Abonnez-vous Easy-Micro [ François Bisch ]
Samedi 23 février 2019 - Semaine 08 - Saint Lazare (Demain: Saint Modeste)
Aujourd'hui, c'est l'anniversaire de Louis Bertignac (1954-65 ans), musicien français (guitariste du groupe de rock français Téléphone). Autre 23 février: 1468 - Mort de Gutenberg, inventeur de l'imprimerie.
Haut de page Easy-Micro