Hachage md5, aide débutant malgré nombreux essais...
Pierre
-
Pierre -
Pierre -
Bonjour à tous,
Alors voila je commence à coder doucement le php et je me suis attardé sur un petit tuto sur internet qui permet de voir la mise en place d'un forum et donc de voir des cas classiques comme :
- inscription/connexion
-publication...
bien que le système comporte des erreurs que j'ai pu surmonter, il présente des choses à améliorer. Notamment le hachage du mot de passe, dans le système actuel il n'y en a pas, je bute un peu la dessus notamment sur où intégrer le md5 et comment le décrypter lors de la connexion.
J'ai tenté de nombreuses fois mais je but vraiment et j'y arrive pas du tout.
Une âme charitable pourrait-elle m'aider ?
Un échange par skype est possible, si ça arrange des personnes.
En vous remerciant beaucoup,
Pierre
Voici mes fichiers :
index.php :
inscription.php :
connexion.php :
Mes fonctions :
function.php :
inscription.class.php :
connexion.class.php :
Alors voila je commence à coder doucement le php et je me suis attardé sur un petit tuto sur internet qui permet de voir la mise en place d'un forum et donc de voir des cas classiques comme :
- inscription/connexion
-publication...
bien que le système comporte des erreurs que j'ai pu surmonter, il présente des choses à améliorer. Notamment le hachage du mot de passe, dans le système actuel il n'y en a pas, je bute un peu la dessus notamment sur où intégrer le md5 et comment le décrypter lors de la connexion.
J'ai tenté de nombreuses fois mais je but vraiment et j'y arrive pas du tout.
Une âme charitable pourrait-elle m'aider ?
Un échange par skype est possible, si ça arrange des personnes.
En vous remerciant beaucoup,
Pierre
Voici mes fichiers :
index.php :
<?php session_start(); include_once 'function/function.php'; $bdd = bdd(); if (!isset($_SESSION['id'])) { header('Location:connexion.php'); exit(); } else { ?> <!DOCTYPE html> <head> <meta charset='utf-8' /> <title>Mon super forum</title> <meta name="author" content=""> <link rel="stylesheet" type="text/css" href="css/general.css"> <link rel="shortcut incon" type="text/css" href="images/favicon.ico"> </head> <body> <?php echo $_SESSION['email']; ?> <a href="deconnexion.php">Deconnexion</a> <h1><a href="index.php">TITRE !</a></h1> <div id="Cforum"> <?php if(isset($_GET['categorie'])) { $_GET['categorie'] = htmlspecialchars($_GET['categorie']); ?> <div class="categories"> <h1><?php echo $_GET['categorie']; ?></h1> </div> <a href="addPost.php">Ajouter un sujet</a> <?php } else { $requete = $bdd->query('SELECT * FROM categories'); while($reponse = $requete->fetch()) { ?> <div class="categories"> <a href="index.php?categorie=<?php echo $reponse['name']; ?>"><?php echo $reponse['name']; ?></a> </div> <?php } } ?> </div> </body> </html> <?php } ?>
inscription.php :
<?php session_start(); include_once 'function/function.php'; include_once 'function/inscription.class.php'; $bdd = bdd(); if (isset($_POST['pseudo']) AND isset($_POST['email']) AND isset($_POST['mdp']) AND isset($_POST['mdp2'])) { $inscription = new inscription($_POST['pseudo'],$_POST['email'],$_POST['mdp'],$_POST['mdp2']); $verif = $inscription->verif(); if($verif == "ok") { if ($inscription->enregistrement()) { if ($inscription->session()) { header('Location: index.php'); } } else { echo 'Une erreur est survenue'; } } else { $erreur = $verif; } } ?> <!DOCTYPE html> <head> <meta charset='utf-8' /> <title>Mon super forum</title> <meta name="author" content=""> <link rel="stylesheet" type="text/css" href="css/general.css"> <link rel="shortcut incon" type="text/css" href="images/favicon.ico"> </head> <body> <h1>Inscription</h1> <div id="Cforum"> <form method="post" action="inscription.php"> <p> <input name="pseudo" type="text" placeholder="Pseudo" required /><br> <input name="email" type="email" placeholder="Adresse mail" required /><br> <input name="mdp" type="password" placeholder="Mot de passe" required /><br> <input name="mdp2" type="password" placeholder="Confirmation de votre mot de passe" required /><br> <input type="submit" value="S'inscrire" /> <?php if (isset($erreur)) { echo $erreur; } ?> </p> <p>Si vous avez deja un compte cliquez <a href="connexion.php">ici</a></p> </form> </div> </body> </html>
connexion.php :
<?php session_start(); include_once 'function/function.php'; include_once 'function/connexion.class.php'; $bdd = bdd(); if(isset($_POST['email']) AND isset($_POST['mdp'])) { $connexion = new connexion($_POST['email'],$_POST['mdp']); $verif = $connexion->verif(); if($verif =="ok") { if($connexion->session()) { header('Location: index.php'); } } else { $erreur = $verif; } } ?> <!DOCTYPE html> <head> <meta charset='utf-8' /> <title>Mon super forum</title> <meta name="author" content=""> <link rel="stylesheet" type="text/css" href="css/general.css"> <link rel="shortcut incon" type="text/css" href="images/favicon.ico"> </head> <body> <h1>Connexion</h1> <div id="Cforum"> <form method="post" action="connexion.php"> <p> <input name="email" type="email" placeholder="Adresse mail" required /><br> <input name="mdp" type="password" placeholder="Mot de passe..." required /><br> <input type="submit" value="Connexion" /> <?php if(isset($erreur)) { echo $erreur; } ?> </p> <p>Si vous n'avez aucun compte, inscrivez-vous <a href="inscription.php">ici</a> c'est gratuit'</p> </form> </div> </body> </html>
Mes fonctions :
function.php :
<?php function bdd() { try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=forum', 'root', '', $pdo_options); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } return $bdd; } ?>
inscription.class.php :
<?php include_once 'function.php'; class inscription { private $pseudo; private $email; private $mdp; private $mdp2; private $bdd; public function __construct($pseudo,$email,$mdp,$mdp2) { $pseudo = htmlspecialchars($pseudo); $email = htmlspecialchars($email); $this->pseudo = $pseudo; $this->email = $email; $this->mdp = $mdp; $this->mdp2 = $mdp2; $this->bdd = bdd(); } public function verif() { if(strlen($this->pseudo) > 3 AND strlen($this->pseudo) < 20 ) { if(filter_var($this->email, FILTER_VALIDATE_EMAIL)) { if (strlen($this->mdp) > 5 AND strlen($this->mdp) < 20 ) { if ($this->mdp == $this->mdp2) { return 'ok'; } else { $erreur = 'Les mots de passe ne sont pas identiques'; return $erreur; } } else { $erreur = 'Le mot de passe doit contenir entre 5 et 20 caractères'; return $erreur; } } else { $erreur = 'syntaxe de l\'adresse email incorrect'; return $erreur; } } else { $erreur = 'Le pseudo doit contenir entre 3 et 15 caractères'; return $erreur; } } public function enregistrement() { $requete = $this->bdd->prepare("INSERT INTO membres(pseudo, email, mdp) VALUES (:pseudo,:email,:mdp)"); $requete->execute(array( 'pseudo'=> $this->pseudo, 'email'=> $this->email, 'mdp'=> $this->mdp )); return 1; } public function session() { $requete = $this->bdd->prepare("SELECT id FROM membres WHERE pseudo = :pseudo"); $requete->execute(array( 'pseudo'=> $this->pseudo )); $requete = $requete->fetch(); $_SESSION['id'] = $requete['id']; $_SESSION['pseudo'] = $this->pseudo; return 1; } }
connexion.class.php :
<?php include_once 'function.php'; class connexion { private $email; private $mdp; private $bdd; public function __construct($email,$mdp) { $this->email = $email; $this->mdp = $mdp; $this->bdd = bdd(); } public function verif() { $requete = $this->bdd->prepare('SELECT * FROM membres WHERE email = :email'); $requete->execute(array('email'=> $this->email)); $reponse = $requete->fetch(); if($reponse) { if($this->mdp == $reponse['mdp']) { return 'ok'; } else { $erreur = 'Le mot de passe est incorrect'; return $erreur; } } else { $erreur = 'Cet email n\'est lie a aucun compte'; return $erreur; } } public function session() { $requete = $this->bdd->prepare("SELECT id FROM membres WHERE email = :email"); $requete->execute(array( 'email'=> $this->email )); $requete = $requete->fetch(); $_SESSION['id'] = $requete['id']; $_SESSION['email'] = $this->email; return 1; } }
A voir également:
- Hachage md5, aide débutant malgré nombreux essais...
- Md5 checksum - Télécharger - Web & Internet
- Logiciel de programmation pour débutant - Guide
- Logiciel montage vidéo débutant - Guide
- Telephone bloqué apres 3 essais - Guide
- Md5 decrypt ✓ - Forum Programmation
1 réponse
En fait le md5 tout comme le sha1 ne sont justement pas fait pour être décrypter.
Ce qu'il faut comprendre c'est que tu dois encoder le MDP pour qu'il aille en BDD.
Et ensuite ne plus le toucher.
Donc à l'inscription, avant ton INSERT INTO dans la BDD, tu fais un
$mdp_inscription=md5($POST['mdp_insc']);
La tu obtiens un mot de passe crypté en BDD.
Maintenant à la connexion pour vérifier si il est bon, tu récupères ce que l'utilisateur à entré en l'encodant lui aussi:
$mdp_connec=md5($POST['mdp_connec']);
Et tu vérifie si le mdp encodé de l'utilisateur est bien égal à celui en BDD.
Mais à aucun moment tu ne dois "décrypter" ce code, c'est un peu contraire à l'utilisation de ces cryptages ^^ , les mots de passe sont ainsi protégés aussi de ceux qui gèrent la BDD.
Ce qu'il faut comprendre c'est que tu dois encoder le MDP pour qu'il aille en BDD.
Et ensuite ne plus le toucher.
Donc à l'inscription, avant ton INSERT INTO dans la BDD, tu fais un
$mdp_inscription=md5($POST['mdp_insc']);
La tu obtiens un mot de passe crypté en BDD.
Maintenant à la connexion pour vérifier si il est bon, tu récupères ce que l'utilisateur à entré en l'encodant lui aussi:
$mdp_connec=md5($POST['mdp_connec']);
Et tu vérifie si le mdp encodé de l'utilisateur est bien égal à celui en BDD.
Mais à aucun moment tu ne dois "décrypter" ce code, c'est un peu contraire à l'utilisation de ces cryptages ^^ , les mots de passe sont ainsi protégés aussi de ceux qui gèrent la BDD.
Oui pour le décrypter je voulais dire le comparer à la BDD !
Je test de suite !
Merci