TP N° 4 – 2 - Toubkal-it
Transcription
TP N° 4 – 2 - Toubkal-it
TP N° 4 – 2 Partie I : Inscription, Authentification et Session 1. Créer une page web d’authentification qui contient les éléments suivants : - Lien (S’inscrire) vers la page d’inscription pour les personnes non encore enregistrées. - Une zone de saisie d’email et une zone de saisie de mot de passe pour identifier le visiteur. - Renseigner un texte indicatif par défaut dans les champs de formulaire. Ces valeurs s'effacent dès que l'utilisateur active le champ de formulaire. - Une fois le visiteur est identifié, un message de bienvenue s’affiche avec le nom du visiteur. - Si l’email ne figure pas dans la base, le visiteur est redirigé automatiquement vers la page d’inscription et l’email sera initialisé avec la valeur antérieurement saisie. - Si le mot de passe saisi est incorrect un message « mot de passe incorrect » s’affiche en rouge. 2. Créer une page web d’inscription pour les sportifs non encore enregistrés. - Vérifier que les champs mot de passe, et confirmez mot de passe sont bien identiques. - Après la validation le visiteur est redirigé vers la page d’authentification. 3. Une fois le visiteur est identifié sera redirigé vers la page d’accueil : - Après la déconnexion le visiteur est redirigé vers la page d’authentification et toute tentative de retourner vers la page d’accueil sans une authentification sera négligée. Page 1 sur 4 LACHGAR Mohamed (www.toubkalit.ma) Indications : a. Script de connexion : login.php <?php require_once 'connexion/connexion.php'; extract($_POST); $query = "select password, nom from sportif where email like '$email'"; $result = mysql_query($query) or die(mysql_error()); if (mysql_num_rows($result) != 0) { while ($var = mysql_fetch_array($result)) if($var['password'] == $password){ session_start(); $_SESSION['nom'] = $var['nom']; header("Location:accueil.php"); }else{ header("Location:index.php?message=mot de passe incorrect"); } } else { header("Location:inscription.php?email=$email"); } ?> b. Script de la déconnexion : logout.php <?php session_start(); session_destroy(); header("Location: index.php"); ?> c. Page d’accueil : <!DOCTYPE html> <?php session_start(); if (empty($_SESSION)) header("Location:index.php"); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <?php echo "Bienvenue " . $_SESSION['nom']; ?> <a href="logout.php">Déconnexion</a> </body> </html> Page 2 sur 4 LACHGAR Mohamed (www.toubkalit.ma) Partie II : Crypter les mots de passe dans une base de données Objectif : Comment crypter les mots de passe dans une base de données ? Par sécurité, il est une bonne pratique qui consiste à crypter les mots de passe stockés dans une table de votre base de données. Ainsi, dans le cas où une personne malveillante arriverait à consulter votre table, elle ne pourrait pas voir le mot de passe, mais une suite de caractères dépourvue de sens. Comment stocker ces mots de passe cryptés? La fonction md5 () : md5 est utilisé pour encoder une chaine de façon non décodable notamment pour les mots de passe stocker dans une base de donnée. Le résultat md5 d'une chaine de caractère sera toujours la même. Exemple 1 : <?php $password = "monmotdepasse"; $paswordEncode = md5($password); echo '<p>Mot de passe encode : '.$paswordEncode.'</p>'; ?> Résultat : Mot de passe encode : 193f5287eff7d1d5e0a6e66ef769cb49 Pour ne pas avoir un résultat md5 qui sera assez simple de trouver, on utilise une méthode communément appelé "grain de sel". Ceci consiste à toujours ajouter une petite chaine de caractère à votre mot de passe. Exemple 2 : <?php $sel = 'XfRY47'; $password = "monmotdepasse"; $paswordEncode = md5($password.$sel); echo '<p>Mot de passe encode avec le grain de sel : '.$paswordEncode.'</p>'; ?> Résultat : Mot de passe encode avec le grain de sel : 2ca0c1f0a59a999e60cd1ef3b460b714 Page 3 sur 4 LACHGAR Mohamed (www.toubkalit.ma) Comparer deux mots de passe dont une est encodé avec un grain de sel et stocker dans une base de données MySQL et l'autre provient d'un formulaire web : <?php $sel = 'Bx78iLj'; $password = $_POST['password']; $paswordEncode = md5($password.$sel); $requete = "SELECT * FROM Users WHERE password='$paswordEncode'"; $sql = mysql_query($requete); if(mysql_num_rows($sql) == 1) echo '<p>Le mot de passe existe bien dans la bae de donnée.</p>'; else echo '<p>Erreur, le mot de passe n\'existe pas.</p>'; ?> Travail à faire : 1. Modifier la page d’inscription pour rendre le mot de passe crypté. 2. Modifier la page d’authentification pour prendre en charge les modifications effectuées. Page 4 sur 4 LACHGAR Mohamed (www.toubkalit.ma)