PHP TD5: Cookies et sessions

Identification

Créez une page de connexion (identifiant et mot de passe) qui vérifie l'identification dans la base de données.

Suivi de session

Nous allons maintenant intégrer ce que nous avons fait dans une application cohérente. Tout d'abord, créez un menu qui comporte:

  • Accueil / Liste des séries / Inscription / Connexion

Vous réutiliserez la liste des séries, l'inscription et la connexion implémentées précédemment

Faites en sorte que le menu soit factorisé entre les pages. Pour cela, vous pourrez utiliser par exemple la fonction include afin de placer le code du menu dans un fichier séparé.

Lorsque l'utilisateur est connecté, affichez un menu différent:

  • Accueil / Liste des séries / Déconnexion [toto@toto.com]

Où toto@toto.com est l'adresse email de l'utilisateur connecté.

Le lien vers la déconnexion devra déconnecter l'utilisateur, et le renvoyer sur la page d'accueil.

Séries suivies

En utilisant la table user_series dans la base de données, faites en sorte qu'un utilisateur puisse "suivre" une série (qui lui sera alors associée) ou arrêter de suivre une série.

Cette fonctionnalité n'appaîtra que lorsque l'utilisateur est connecté

Lorsqu'il se rendra sur la page de lad série, il verra si il la suit ou pas.

Faites une page affichant la liste des séries suivies par l'utilisateur. Cette dernière apparaîtra également dans le menu uniquement lorsque l'utilisateur est connecté.

En ajoutant du code JavaScript, et notamment la fonction fetch, faites en sorte que l'utilisateur puisse suivre ou arrêter de suivre une série sans recharger la page.

Ajout d'un CAPTCHA à l'inscription

Le but de cet exercice est d'implémenter un CAPTCHA, ou code visuel que l'utilisateur doit recopier pour confirmer qu'il n'est pas un robot au moment de son inscription, que vous avez implémentée dans la partie précédente.

Le code qui permet de générer l'image vous est déja fourni dans l'arhive captcha.zip.

1. Mise en place

Ajoutez un champ à votre formulaire d'inscription comportant un champ texte, et affichang l'image générée par captcha.php, proposant ainsi à l'utilisateur de la recopier pour confirmer qu'il n'est pas un robot.

2. Phrases aléatoire

Faites en sorte que le code affiché dans l'image soit généré aléatoirement.

3. Validation

Ecrivez maintenant le code qui confirme si l'utilisateur a bien recopié le code présenté.

Attention: Lorsque le formulaire est soumis, il faut vérifier coté serveur que le code qui a été entré par l'utilisateur est bien celui qui a été préalablement affiché sur son image. Il faut évidemment éviter de transmettre le code en clair à l'utilisateur!

(bonus) Session "faites maison"

Faites la même chose que l'exercice précédent mais en réalisant vous même le système de session (sans utiliser session_start() ou $_SESSION)

Quelques fonctions utiles:

// Lire et écrire dans un fichier
file_put_contents($file, $data); // Ecrire
$data = file_get_contents($file); // Lire
// Tester si un fichier $file existe
if (file_exists($file)) {
}
// Générer un identifiant aléatoire
$id = uniqid();
// Transformer un objet en chaîne de caractères
$data = serialize($something);

// Transformer une chaîne de caractère en un objet
$something = unserialize($data);
// Définir un cookie 'key' à '123' qui expirera quand le
// navigateur sera fermé
setcookie('key', '123', 0);