Cookies & sessions

Licence Informatique 3ème année

Alexandre Niveau — Jean-Marc Lecarpentier

Enseignement des technologies du Web

 

Cookies & sessions

Notes de cours

Travail personnel

Objectifs

Ce TP commence par deux exercices d'application directe des principes des cookies et des sessions. Ils ont l'avantage de vous faire manipuler du PHP simple et réfléchir un peu au fonctionnement de HTTP.

Le troisième exercice montre une application classique des cookies, l'enregistrement de préférences de l'internaute.

Exercice 1 — Cookies #

  1. Écrire un script PHP qui crée une page HTML simple affichant la date et l'heure courantes.
  2. En utilisant un cookie, faire en sorte que si l'internaute a déjà visité la page, alors la date et l'heure de sa dernière visite sont également affichées.
    Exemple de résultat
    Exemple de résultat
  3. Modifier le code précédent pour que le site ne se souvienne de l'internaute que pendant trente secondes.
  4. Ouvrir le moniteur réseau de Firefox (clic droit sur la page > Inspecter > onglet « Réseau » ; raccourci : control-shift-E), et observer le cookie transmis dans les en-têtes HTTP de la requête.
  5. Ouvrir l'inspecteur de stockage de Firefox (clic droit sur la page > Inspecter > onglet « Stockage » ; raccourci : shift-F9). Vous pouvez voir les cookies enregistrés par le navigateur pour les domaines utilisés par la page. Essayer de modifier le cookie, et actualiser la page. En particulier, comment s'affiche la page si vous mettez du HTML dans le cookie ? Essayer également de le supprimer.
  6. Conclure sur la confidentialité et la sécurité de l'utilisation des cookies.

Exercice 2 — Sessions PHP #

  1. En utilisant les sessions PHP, écrire un script qui crée une page HTML indiquant le nombre de visites de l'internaute, en suivant ce modèle.
  2. Ouvrir le moniteur réseau de Firefox (clic droit sur la page > Inspecter > onglet « Réseau » ; raccourci : control-shift-E), et observer le cookie de session transmis dans les en-têtes HTTP de la requête. Comment s'appelle-t-il ?
  3. L’utilisation du nom par défaut pour le cookie de session est déconseillée : il vaut mieux mettre un nom spécifique à votre application, ce qui permet de faire tourner plusieurs applications sur le même serveur sans risque qu'elles modifient les données les unes des autres. Modifier le nom du cookie de session (et vérifier que cela a bien pris effet).
  4. Ouvrir l'inspecteur de stockage de Firefox (clic droit sur la page > Inspecter > onglet « Stockage » ; raccourci : shift-F9), supprimer le cookie et actualiser la page. Que se passe-t-il ? Essayer également de modifier la valeur de l'identifiant. Quelle est la différence par rapport à si on avait utilisé un simple cookie nb-visites ?
  5. Ajouter à la page un lien (vers une autre page, ou vers la même page avec un paramètre…) qui permet de remettre le compteur à zéro.

Exercice 3 — Stockage de préférences avec un cookie #

  1. Écrire un script PHP qui crée une page HTML simple avec un titre et du texte.
  2. Créer deux fichiers CSS (très simples !) pour cette page, clair.css et sombre.css, qui donnent des rendus très différents, le premier étant un thème sur fond clair et le second sur fond sombre.
  3. Le script doit regarder si l'URL contient le paramètre theme. S'il a la valeur clair, la page doit s'afficher avec le thème clair ; s'il a la valeur sombre, avec le thème sombre. Si le paramètre n'est pas présent ou a une autre valeur que ces deux-là, la page doit s'afficher avec le thème clair (thème par défaut).
  4. Ajouter au contenu de la page des liens pour changer le thème (des liens vers la page elle-même, avec theme=clair ou theme=sombre en paramètre d'URL). Vérifier que tout fonctionne correctement. Ajouter aussi un lien vers la page elle-même sans aucun paramètre.
  5. En utilisant un cookie, faire en sorte que la page sans paramètre utilise le dernier thème choisi (et ne se rabat sur le thème par défaut qu'en l'absence de cookie).

NB : pour vos tests et debugging, n'oubliez pas l'outil « inspecteur de stockage » de Firefox, qui permet de supprimer facilement un cookie.