TODO: * vraie démo cookie, en montrant outils FF storage * exemple cookie: dernière page visitée. avec deux scripts différents. * idem avec session * simplifier exemple session, pour ne pas confondre session php et session au sens général * avec ces détails en plus le cours peut durer une heure
GET /index.html HTTP/1.1 Host: www.example.org
HTTP/1.0 200 OK Content-type: text/html Set-Cookie: name=value Set-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT <!DOCTYPE html> <html lang=fr> (suite de la page…)
GET /toto.html HTTP/1.1 Host: www.example.org Cookie: name=value; name2=value2
Set-Cookie
Set-Cookie
,
et de lire les informations du champ Cookie
dans les requêtessetcookie
(voir manuel)
setcookie('prenom', 'Toto', time() + (86400 * 7));crée un cookie valable 7 jours et contenant l'information
prenom=Toto
.
$_COOKIE
:
if (key_exists('prenom', $_COOKIE))
echo "Bienvenue, " . htmlspecialchars($_COOKIE['prenom']) . " !";
session.use_only_cookies
session_start()
sur chaque page$_SESSION
$_SESSION
est sauvegardé sur le serveur
<?php
session_start();
// teste si l’internaute est connu ou non
if (!key_exists("nom", $_SESSION) ||
!key_exists("prenom", $_SESSION) ||
!key_exists("date", $_SESSION)) {
echo "Vous n’êtes pas identifié·e sur le site";
} else {
echo "<p>Bienvenue " . $_SESSION["prenom"] . " "
. $_SESSION["nom"] . "</p>";
echo "<p>Dernier accès : " . $_SESSION["date"] . "</p>";
$_SESSION["date"] = date("Y-m-d H:i:s");
}
// ... suite du script
?>
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
session_start()
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à