logo du langage PHP Les bases du langage PHP

Chapitre 19 - Les sessions

Documentation officielle

Les sessions servent sur un site à collecter des données, et les faire transiter de page en page, mémorisées. Si un cookie les conserve coté client (ordinateur), dans le cas de la session ça sera coté serveur (et en local, ce fichier sera visible dans C:\xampp\tmp ).

Ainsi, un utilisateur connecté sera reconnu sur toutes les pages du site, naviguant de l'une vers l'autre, sans perdre ses données ou ses droits (certaines pages étant visibles aux seuls connectés)

Dans le cadre d'un E Commerce, je créerai une autre session pour le panier. Cela permettra d'alimenter ce dernier, de le modifier (ajouter un article, modifier sa quantité, ou le supprimer), jusqu'à la procédure de paiement

C'est avec la fonction prédéfinie session_start(), spécifique aux sessions, que j'en créerai ou réouvrirai une

Il en existe d'autres ( Documentation officielle) dont session_unset qui permettra de vider une session de toutes ou une partie de ses variables, sans détruire le fichier (ce que fera par contre session_destroy)

Pour que session_start fonctionne, il faudra la déclarer en haut de page, avant le DOCTYPE. Si le header est positionné plus en haut, cela génèrera une erreur PHP

Le fichier, crée avec session_start, se localisera sur mon PC dans le dossier C:\xampp\tmp (comme déjà précisé en introduction)

C'est avec la Superglobale $_SESSION que je vais créer mes variables de session, stockées dans un tableau associatif

Voici le script pour "collecter" les diverses données d'un utilisateur


<?php
session_start();

$_SESSION['prénom'] = "Philéas";
$_SESSION['age'] = 52 ;
?>

Et celui qui me permettra de récupérer ces données sur une autre page


<?php
session_start();

if(isset($_SESSION)){
    echo "Je suis " . $_SESSION['prénom'] . " et j'ai " . $_SESSION['age'] . " ans.";
}
?>

Cette nouvelle page aussi devra etre débutée par session_start, sinon, elle ne pourra récupérer les données

Mon script, pour fonctionner, devra vérifier si la session existe. Puis, je récupérerai mes données avec la Superglobale $_SESSION, suivie de crochets [ ], les données étant stockées dans un tableau.