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)