Créez un répertoire TP3 dans public_html et copiez-y les 4 fichiers suivant du TP2 :
authenticate.phpsignin.phpsignout.phpwelcome.phpCet exercice vous propose de mettre en place une gestion des utilisateurs dans une base de données MySQL.
Note : il est utile d'avoir réalisé l'exercice 6 du TP2 afin de transmettre les message d'erreur de PHP au client.
W31 à partir de webetuUsers permettant de stocker les logins et mot de passe des utilisateurs. Réfléchissez bien aux champs et attributs des champs : auto-increment, unique, null, etc.bdd.php contenant 3 constantes correspondant aux
3 paramètres de la construction d'un objet PDO (voir cours et documentation)authenticate.php pour remplacer l'utilisation du tableau $users par la BDD en utilisant PDO. Pour cela :
bdd.phprowCount()Note : N'oubliez pas de gérer les exceptions PHP déclenchées par la construction d'un objet PDO. Si vous avez fait l'exercice 6 du TP2, vous pouvez ajouter les messages d'erreurs à la variable de session
message.
signup.php qui propose un formulaire d'inscription pour un nouvel utilisateur (avec mot de passe et confirmation de mot de passe) et le soumet à la page adduser.php.adduser.php qui :
POSTsignup.phpsignin.phpsignup.phpsignup.php sur signin.php, et réciproquement.Note : Si vous avez fait l'exercice 5 du TP2, vous pouvez ajouter les messages d'erreur et de réussite à la variable de session
message.
Actuellement les mots de passe sont codés en clair dans votre base de données. Vous allez mettre en place le chiffrement (et le décryptage) des mots de passe.
Note 1 : Ce serait le bon moment pour faire un commit Git de votre 1ère version fonctionnelle de ce TP.
Note 2 : Si tout a bien été fait jusque là, les questions 2. et 3. de cet exercice nécessitent de ne changer qu'une seule ligne dans chacun des fichiers.
adduser.php afin qu'il enregistre le mot de passe chiffrés avec la fonction PHP password_hash. Attention, lisez bien sa documentation et, si besoin, procédez aux modifications des attributs de la colonne du mot de passe dans PhpMyAdmin.authenticate.php pour qu'il compare le mot de passe
du formulaire avec celui récupéré dans la BDD à l'aide de la fonction
password_verify.En théorie, la vérification de la similarité des deux mots de passe s'effectue auussi côté client, en Javascript, afin de réduire les requêtes inutiles.
signup.php, écrivez une fonction javascript checkPassword qui récupère le contenu des input du mot de passe et de sa confirmation et les compare. Utilisez la fonction setCustomValidity pour mettre à jour la validité du champ de confirmation.checkPassword à chaque saisie d'un nouveau caractère dans le champ de confirmation. Regardez du côté de l'attribut HTML oninput.helpers.php. Pensez au typage !