|
|
@@ -0,0 +1,93 @@
|
|
|
+TP2 - Gestion de comptes utilisateur
|
|
|
+====================================
|
|
|
+
|
|
|
+Créez un répertoire `TP2` contenant les 5 fichiers vides suivants :
|
|
|
+- `signin.php`
|
|
|
+- `authenticate.php`
|
|
|
+- `welcome.php`
|
|
|
+- `signout.php`
|
|
|
+- `users.php`
|
|
|
+
|
|
|
+
|
|
|
+Objectifs
|
|
|
+----------
|
|
|
+
|
|
|
+L'objectif des exercices suivants est de compléter progressivement ces fichiers pour mettre en place un **mécanisme d'authentifications d'utilisateurs**. Attention, ces fichiers **serviront de base pour les TPs sur la POO et les BDD**.
|
|
|
+
|
|
|
+Pour tous les exercices du TP :
|
|
|
+- **vérifiez** et **sécurisez** les variables que l'utilisateur peut modifier
|
|
|
+- envisagez tous les cas de figures possibles (méthodes HTTP) pour accéder à vos pages et **neutralisez** les cas non désirés
|
|
|
+- n'oubliez pas de commiter/pusher régulièrement votre travail sur le dépôt Git pour vous familiariser avec.
|
|
|
+
|
|
|
+
|
|
|
+Exercice 1 : Formulaire de connexion
|
|
|
+------------------------------------
|
|
|
+
|
|
|
+Complétez le fichier PHP `signin.php` pour affichez un document HTML avec un formulaire proposant de s'authentifier à l'aide d'un login et d'un mot de passe.
|
|
|
+
|
|
|
+Ce fichier ne doit contenir **aucun code PHP** (pour le moment).
|
|
|
+
|
|
|
+Exercice 2 : Un fichier comme BDD
|
|
|
+---------------------------------
|
|
|
+
|
|
|
+Pour ce TP, la base de donnée des utilisateurs sera stockée dans le fichier `users.php` sous la forme d'un tableau associatif `$users` contenant des couples `'login' => 'mot de passe'`.
|
|
|
+
|
|
|
+Créez ce tableau avec quelques utilisateurs de votre imagination.
|
|
|
+
|
|
|
+Exercice 3 : Authentification
|
|
|
+-----------------------------
|
|
|
+
|
|
|
+*Note* : ce fichier ne comportera aucun code HTML.
|
|
|
+
|
|
|
+Complétez le script PHP `authenticate.php` qui traite la requête HTTP POST du formulaire `signin.php` comme suit :
|
|
|
+
|
|
|
+1. Il demande une redirection vers le fichier `signin.php` si la méthode HTTP utilisée n'est pas POST.
|
|
|
+1. Il inclut le fichier `users.php`.
|
|
|
+2. Il vérifie que le tableau `$users` contient le login transmis en POST. Regardez la documentation de [array_key_exists](https://www.php.net/manual/fr/function.array-key-exists.php)
|
|
|
+3. Si le login existe, il vérifie que le mot de passe passé en POST correspond au mot de passe du tableau `$users`.
|
|
|
+3. Si les mots de passe correspondent :
|
|
|
+ - une session est créée
|
|
|
+ - le login est sauvegardé dans le tableau de session
|
|
|
+ - une demande de redirection vers le fichier `welcome.php` est envoyée
|
|
|
+4. Dans tous les cas d'échec d'authentification, une demande de redirection vers le fichier `signin.php` est envoyée.
|
|
|
+
|
|
|
+
|
|
|
+Exercice 4 : Mon compte
|
|
|
+-----------------------
|
|
|
+
|
|
|
+Complétez le fichier PHP `welcome.php` pour qu'il se comporte ainsi :
|
|
|
+
|
|
|
+1. Si l'utilisateur ne s'est pas encore authentifié, une demande de redirection vers le fichier `signin.php` est envoyée.
|
|
|
+2. Si l'utilisateur est authentifié, ce fichier lui propose un contenu HTML comportant un message de bienvenue personnalisé ainsi qu'un lien de déconnexion vers le fichier PHP `signout.php`
|
|
|
+
|
|
|
+
|
|
|
+Exercice 5 : Déconnexion
|
|
|
+------------------------
|
|
|
+
|
|
|
+Complétez le fichier PHP `signout.php` pour qu'il :
|
|
|
+
|
|
|
+1. efface l'identité de l'utilisateur connecté de la session courante
|
|
|
+2. envoie une demande de redirection vers le fichier `signin.php`
|
|
|
+
|
|
|
+Note : Ce fichier doit contenir **exactement** 3 instructions.
|
|
|
+
|
|
|
+
|
|
|
+Exercice 6 : Messages d'erreur du serveur vers le client
|
|
|
+--------------------------------------------------------
|
|
|
+
|
|
|
+Cet exercice propose de mettre en place un système de messages affichés sur la page `signin.php` pour indiquer à l'utilisateur le problème rencontré par le module PHP.
|
|
|
+
|
|
|
+1. Dans le fichier `authenticate.php`, créez une variable de session `message` qui contiendra un texte relatif aux différents cas de figure rencontrés lors de la tentative d'authentification :
|
|
|
+ - lorsque le login n'existe pas
|
|
|
+ - lorsque le mot de passe est incorrect
|
|
|
+
|
|
|
+2. Dans le fichier `signin.php`, affichez le contenu de la variable de session `message` dans une balise `<section>`, si cette variable existe et n'est pas vide.
|
|
|
+
|
|
|
+
|
|
|
+Pour les plus rapides
|
|
|
+---------------------
|
|
|
+
|
|
|
+- Niveau 1 : Ajoutez un fichier de style CSS pour mettre en forme votre
|
|
|
+formulaire.
|
|
|
+- Niveau 2 : Utilisez [Bootstrap](https://getbootstrap.com) pour mettre en
|
|
|
+forme vos différentes pages.
|