* Démo : faire l'exo derniere-visite avec un cookie, puis avec une session. ça a bien marché. TODO: * j'avais gardé l'ordre initial des slides mais lors du CM j'ai d'abord montré comment ça marchait : on fait session_start et après on a accès à un tableau $_SESSION qui persiste. je pense que c'est plus clair. du coup, adapter les slides. NB: sur la sécurité offerte par un identifiant aléatoire. * nb de mots de 10 octets : 2**80 ~= 1.2e24 * nb de cm³ dans tous les océans : 1.37e24 (1.37 milliards de km³, https://fr.wikipedia.org/wiki/Oc%C3%A9an#Dimensions * nb de grains de sable (dans les déserts + plages) : 4.6e23 https://boffinsportal.com/how-many-grains-of-sand-are-there-in-the-world/ * nb d'étoiles dans l'univers entre 1e22 et 1e24 (fin de la page à l'URL ci-dessus)
session_start()
sur chaque page$_SESSION
$_SESSION
est sauvegardé sur le serveur
<?php
/* on demande à PHP de remplir $_SESSION
* avec les données de la session */
session_start();
/* affichage d'une valeur écrite lors d'une précédente requête */
echo "<p>Dernier accès : " . $_SESSION["date"] . "</p>";
/* modification du tableau, qui persistera lors de futures requêtes */
$_SESSION["date"] = date("Y-m-d H:i:s");
?>
Les sessions PHP sont typiquement utilisées pour implémenter des sessions utilisateur
On demande à l'internaute de s'authentifier, et une fois que c'est fait,
on stocke ses données dans le tableau $_SESSION
Cependant, on peut parfaitement utiliser $_SESSION
sans implémenter d'authentification, et on peut faire en sorte que la session soit
valable pendant des mois, indépendamment de la fermeture de la page (en changeant le lifetime
du cookie de session via session_set_cookie_params
)
les sessions PHP sont simplement un mécanisme offert par PHP pour simplifier et sécuriser l'utilisation de cookies
unset
(comme pour une variable normale)session_destroy()
(attention, l'effet ne sera visible qu'à la fin du script)session_encode()
, session_decode()
PHPSESSID
session_name("monsiteID");
, obligatoirement
avant le session_start();
. Attention : caractères alphanumériques seulementheader
,
setcookie
et session_start
doivent être appelées avant tout envoi
de contenu (même une espace ou un saut de ligne !)headers already sent, chercher de ce côté-là
session.use_only_cookies