Deux mécanismes pour permettre au serveur de stocker des informations
sur un visiteur, pour les retrouver plus tard (soit lors d’une visite
ultérieure, soit lors du chargement d’une autre page du site).
Avec les sessions, les informations sont stockées sur le serveur.
Avec les cookies, elles sont stockées sur le client.
Sessions
Fonction session_start ()
Si c’est la première visite, une session est créée. Sinon, les
informations de session sont rechargées.
Les informations sont stockées sur le serveur
(donc ne sont pas falsifiables).
Pour faire le lien entre la session et l’utilisateur, la fonction crée
un cookie PHPSESSID (voir ci-dessous pour les cookies) sur la machine
du client. Ce cookie ne contient aucune des informations fournies par
l’utilisateur au serveur.
La fonction session_start
doit être appelée avant tout affichage (donc même
pas un espace avant la balise php).
Exemple :
<?php
...
/* Pas d'echo avant cette ligne !!!! */
session_start ();
if (!isset($_SESSION['connu']))
{
$_SESSION['connu'] = true;
echo "Ceci est votre premiere visite";
}
else echo "On s'est deja vus quelque part ?";
?>
Possibilité de définir où les infos de sessions sont stockées :
session_save_path(chemin);
Cookies
Les cookies sont des éléments d’information stockés sur la machine du
client par le navigateur, que le serveur retrouvera lors d’une visite ultérieure.
setcookie('clef', 'valeur')
setcookie('clef', 'valeur', time() + nb_secondes)
Cette fonction doit être appelée avant tout affichage.
Pour l’utiliser ensuite :
isset($_COOKIE['clef'])
Exemple :
<?php
...
/* Pas d'echo avant cette ligne !!!! */
if (!isset($_COOKIE['mon-cookie']))
setcookie('mon-cookie', 'ma-valeur');
else
{ ... }
?>
A noter :
- le cookie est placé par le navigateur, donc si vous lancez un autre
navigateur, le cookie ne sera pas être utilisé - un cookie est falsifiable par le client : on peut modifier la valeur
qui est stockée (certaines extensions firefox ou chrome le permettent, par exemple)
Avec l’arrivée d’HTML5, une troisième méthode de stockage d’informations est disponible: le localStorage.
Plus d’informations.
À propos des sessions (désolé du doublon), elles ne sont pas sécurisées à 100%. Les informations sont certes stockées sur le serveur, mais pour associer chaque session à chaque visiteur, un cookie contenant une ID unique de session est créé chez le client, et là est le problème, puisqu’il « suffit » de falsifier son cookie en prenant l’ID de session de quelqu’un d’autre (encore faut-il le trouver, mais ce n’est pas impossible) pour avoir son identité aux yeux du serveur. La seule solution reste le chiffrement de connexion.
Plus d’infos ici.