La session PHP et les cookies vous permettent de stocker des informations de manière temporaire.
La session contrairement aux cookies va vous permettre de sauvegarder des modifications sensibles.
Avec la session, nous allons pouvoir sauvegarder des informations pendant la durée d'une visite sur toutes les pages d'un site.
Avec les cookies, nous pouvons sauvegarder des informations pendant plusieurs mois.
La session PHP
Avec la session, nous allons pouvoir sauvegarder des informations pendant la durée d'une visite. Les données sont sauvegardées sur le serveur dans un fichier et consultables par toutes les pages que visite l'internaute.
Les informations sont stockées temporairement dans ce fichier afin de ne pas alourdir la base de données.
Imaginez le cas d'un site e-commerce. Le client ne va pas forcement acheter un produit.
Grace à la session, les produits ajoutés au panier resteront en mémoire durant sa visite sur le site mais si le client n'a pas validé son panier et qu'il ferme son navigateur, les informations ne seront plus là.
Si le client valide par contre son panier, sa commande sera stockée dans la base de données car c'est une information durable.
session_start()
Pour ouvrir une session on utilise la fonction session_start(), elle se positionne tout au début de notre code PHP. Elle permet de créer le fichier de session ou de l'ouvrir s'il existe déjà.
Ce fichier de session se trouve sur votre serveur dans un dossier /tmp/ (temporaire).
Rendez-vous sur votre serveur local (WAMP, MAMP...) et vous trouverez ce dossier.
Lorsque le visiteur arrive sur le site et se connecte, un numéro de session (id de session) lui est attribué.
On utilise ensuite la variable superglobale $_SESSION (les variables superglobales internes à PHP s'écrivent toujours en majuscules afin de les différencier).
Cette variable va permettre de modifier, lire les informations sauvegardées en session.
Elle fonctionne comme un tableau.
Par exemple :
$_SESSION['prenom'] = 'Théo';
$_SESSION['nom'] = 'Bichet';
Lorsque nous ouvrons une page contenant session_start(), un fichier de session est donc créé mais également un fichier de cookie qui va se placer sur l'ordinateur de l'internaute.
Vous allez donc avoir un fichier de session placé sur votre serveur local et un fichier de cookie placé sur l'ordinateur de l'internaute. Ces des fichiers seront identifiables par le même numéro.
Pour fermer la session du visiteur, on utilise la fonction session_destroy(). A noter que cette fonction sera automatiquement activée dés l'instant où le visiteur ne visite plus le site (après quelques minutes).
Passons à la pratique pour mieux comprendre.
Nous allons créer quatre pages : sessions-1.php - a-propos.php - actualites.php - contact.php
Voici la première page sessions-1.php.
Nous avons donc placé notre fonction session_start() en haut de page pour démarrer la session.
Si vous ouvrez la console de votre navigateur, vous pourrez voir dans la partie stockage le numéro de session.
Et maintenant la deuxième page a-propos.php. Vous pouvez voir que les variables ont été conservées. Continuez de votre côté pour les deux pages restantes.