Cours par Webcam

Cours par Webcam

Formateur Web pour adultes depuis plus 11 ans, je vous propose des COURS collectifs par WEBCAM en LIVE pour booster vos connaissances et être autonome dans la création de site.

En savoir plus

PHP - Bases

PHP - Algorithmie

PHP - Chaîne

PHP - Tableau

PHP - Formulaires

PHP - Fonctions Usuelles

Données entres pages

Environnement et Interaction

PHP objet (POO)

Facebook
Twitter
LinkedIn

Les sessions en PHP

Une session est une superglobale qui est définie par la variable $_SESSION[ ].
Il s’agit d’un tableau associatif qui permet de stocker des valeurs.

Contrairement aux autres variables sa durée de vie ne se limite pas à la durée de vie de la page. Ces valeurs sont stockées sur le serveur et peuvent donc être réutilisées sur n’importe quelles pages du même site.

Les sites marchands utilisent, par exemple, les sessions pour la création de paniers. On retrouve aussi les sessions sur les sites qui proposent des accès membres via un formulaire d’identification.

Créer une session

La fonction session_start() qui est obligatoire va démarrer une nouvelle session. Elle doit être appelée avant tout affichage de contenu dans la page (echo ou affichage html).

<?php
session_start(); // demarre une session
?>

 Note : paramètrez votre éditeur de code sur un encodage UTF-8 (sans BOM)

session utf8 sans BOM

En effet, le BOM (byte order mark) est un indicateur d’ordre des octets, une sorte de signature qui indique l’utilisation d’un encodage unicode ainsi que l’ordre des octets. Il est généralement situé au début du fichier PHP donc son affichage peut empêcher le fonctionnement de session_start().

Fonctionnement interne des sessions

Au démarrage d’une session PHP va créer un fichier texte (coté serveur). Le chemin de ce fichier sera enregistrer dans un Cookie (coté client). Par défaut l’identifiant du Cookie est PHPSESSID.

identifiant session php

La fonction session_start() va donc lire ou créer le cookie pour pouvoir accéder au fichier distant. Donc si les cookies ne sont pas activés, les sessions ne seront pas utilisables.

Ensuite les données du fichier seront lues par PHP (mode lecture) et stockées en mémoire dans la superglobale $_SESSION[]. A l’inverse si vous remplissez la variable $_SESSION[], PHP va à la fin du script écrire les valeurs de la superglobale dans le fichier (mode écriture).

Note : il existe une limite de taille (maximum 8mo) pour la variable session. Plus on est proche de cette limite et plus les performances du serveur diminuent (ralentissement).

Enregistrer une valeur dans une session

Pour pouvoir retrouver la valeur d’une variable sur toutes les pages du site, on enregistrer cette valeur dans une session.

<?php
session_start(); // à mettre tout en haut de la page
//.... autres scripts
$nb = 2;
$_SESSION['nombre'] = $nb; // on enregistre la valeur 2 dans la session
?>

La chaîne ‘nombre’ est la clé du tableau associatif de la session.

Enregistrer un tableau dans une session

Il est possible d’enregistrer plusieurs valeurs sous forme de tableau dans une session.

<?php
session_start(); // à mettre tout en haut de la page
//.... autres scripts
$achat = array("fruit", "céréale", "légumes");
$_SESSION['mesAchats'] = $achat; // on enregistre le tableau $achat dans la session
?>

Rien ne vous empêche d’enregistrer dans la session un tableau multidimensionnel.

Récupérer les valeurs d’une session

L’intérêt des sessions est la récupération des données sur n’importe quelle page du site. Dans la pratique, on affecte les valeurs de la session dans une nouvelle variable qu’on manipule (lecture, modification) par la suite.

<?php
session_start(); // à mettre tout en haut de la nouvelle page
//.... autres scripts
 
$achat = $_SESSION['mesAchats']; // on affecte $achat par la valeur contenu dans la session
echo $achat[0];
?>

Affichage

fruit

Souvenez vous (voir plus haut) que le premier élément du tableau avant de le mettre dans la session était ‘fruit’.

Détruire une session

Pour détruire une session (comme pour déconnecter un membre), il faut vider la superglobale $_SESSION[], puis supprimer le ficher qui est situé sur le serveur avec la fonction session_destroy().

<?php
session_start(); // à mettre tout en haut de page
$_SESSION = array(); // supprime les variables de la session
session_destroy(); // supprime le ficher sur le serveur
?>

Note : Il ne faut pas détruire $_SESSION avec unset($_SESSION) car cela désactive l’enregistrement des variables de session à partir du tableau superglobal.

Si vous voulez détruire complètement la session, effacez aussi le cookie de session.

<?php
session_start(); // à mettre tout en haut de page
$_SESSION = array(); // supprime les variables de la session
if (ini_get("session.use_cookies")) { // supprime le cookie
  $params = session_get_cookie_params();
  setcookie(session_name(), '', time() - 42000,
            $params["path"], $params["domain"],
            $params["secure"], $params["httponly"]
           );
}
session_destroy(); // supprime le ficher sur le serveur
?>

Détruire une variable de session

Si vous souhaitez détruire qu’une variable de session mais pas toutes les variables, utilisez la fonction unset().

<?php
session_start(); // à mettre tout en haut de page
unset($_SESSION['mesAchats']);.
?>

A lire aussi

tutowebdesign

Afficher du contenu au scroll

Afficher du contenu au scroll Voici un effet impressionnant et pourtant très facile à mettre en place sur vos pages. Le principe consiste à faire

Lire »