Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: Personne...
Ce topic a été résolu
Auteur Sujet: Crypter deux mots de passe

zoria

Messages: 2

Salut à tous,

Alors voilà je débute en PHP et j'aimerais changer la méthode de cryptage des mdp en utilisant la fonction password_hash(). Le hash doit être le même pour password et password2.

Mon formulaire d'inscription comporte deux champs (password 1 et password2) qui sont cryptés comme ceci dans le tutoriel de primfx:

<?php
$password = sha1($_POST['password']);
$password2 = sha1($_POST['password2']);
Ce que je cherche à faire:

$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$password2 = password_hash($_POST['password2'], PASSWORD_DEFAULT);

Est-il possible de faire quelque chose dans ce genre ?

$password = password_hash($_POST['password', 'password2'], PASSWORD_DEFAULT);
// ou bien
$password = password_hash($_POST['password'], $_POST['password2'], PASSWORD_DFAULT);
Merci d'avance pour ceux qui prendront le temps d'aider un novice.

Zoria
Publicité

Clouder

Messages: 82

Tu aurais utilisé la fonction crypt de php (Très sécurisé avec la possibilité de faire ta propre clé de cryptage pour les mots de passe) j'aurais pu d'expliqué comment faire mais je n'utilise pas la fonction Hash.

guewen

Messages: 37

Et ces valeurs, tu veux les mettre comment dans la bdd ? Séparés ou dans la même ligne car dans ce cas là, je ne vois aucun intérêt à ce que tu veux faire Clin d'oeil Vaut mieux garder deux variables différentes Clin d'oeil

zoria

Messages: 2

Merci pour vos réponses. ;)

Et ces valeurs, tu veux les mettre comment dans la bdd ? Séparés ou dans la même ligne car dans ce cas là, je ne vois aucun intérêt à ce que tu veux faire Clin d'oeil Vaut mieux garder deux variables différentes Clin d'oeil


Le problème c'est que si je garde deux variables différentes vu que je compare si mon password est identique à password2 cela ne fonctionne pas car le résultat du cryptage est différent.

Un peu plus bas je fais un check justement:

<?php
   if(password == password2)
   {
      // c'est la dernière vérif après j'insère dans la bdd
   }
   else
   {
      // les deux mdp ne correspondent pas (ce qui est mon cas vu que le résultat du cryptage diffère)
   }
?>
La solution la plus simple serait de supprimer cette vérification et de ne garder qu'une seule variable password mais bon, j'aimerais bien quand même que l'utilisateur confirme le mot de passe.

guewen

Messages: 37

Alors, je te l'accorde, c'est le même résultat au final mais pourquoi ne pas faire 
<?php   if($_POST['password'] == $_POST['password2'])
   {
      // Tu mets ton code ici genre les variables que tu cryptes : 
      $password = sha1($_POST['password']);
      $password2 = sha1($_POST['password2']);

      // Blabla, blabla 
   }
   else
   {
      // les deux mdp ne correspondent pas (ce qui est mon cas vu que le résultat du cryptage diffère)
   }
?>

Mais ne te compliques pas la vie si tu as fais comme sa. C'est pareil Clin d'oeil

Florian

Messages: 73

Tu check en clair si c'est les mêmes puis tu crypt pourquoi les crypter avant ? surtout que avec Password hash tu auras jamais les mêmes mot de passe x)

Florian

Messages: 73

Allez je suis sympa !!



if(isconnect() == false){
if(isset($_POST['forminscription'])) {
   $pseudo = htmlspecialchars($_POST['pseudo']);
   $mail = htmlspecialchars($_POST['mail']);
   $mail2 = htmlspecialchars($_POST['mail2']);
   if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) {
      if(preg_match('`^([a-zA-Z0-9-_]{3,32})Allez je suis sympa !!



', $_POST['pseudo'])){
      $pseudolength = strlen($pseudo);
      if($pseudolength <= 32) {
         if($mail == $mail2) {
            if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
               $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
               $reqmail->execute(array($mail));
               $mailexist = $reqmail->rowCount();
               if($mailexist == 0) {
                  if($_POST['mdp'] == $_POST['mdp2']) {
                     $password = password_hash($_POST['mdp'],PASSWORD_BCRYPT,['cost' => 12]);
                     $insertmbr = $bdd->prepare("INSERT INTO membres(users, password, mail, key_confirmed, ip_creation) VALUES(?, ?, ?, ?, ?)");
                     $insertmbr->execute(array($pseudo, $password, $mail, $key, get_ip()));
                     setFlash('Inscription réussite, un mail vous a étais envoyer pour la confirmation du compte', 'success');
                     $contenu = 'Bonjour '.$pseudo.'! <br />'; 
                     $contenu .= 'Confirmation du compte ...<br />'; 
                     $contenu .= 'Pour confirmer votre compte veuillez cliquer sur <a href="google.com?pseudo='.$pseudo.'&token='.$key.'">ce lien</a><br />'; 
                     $contenu .= 'Si le lien ne s\'affiche pas veuillez copier coller le lien dans votre navigateur google.com?pseudo='.$pseudo.'&token='.$key.'<br />';
                    $from = "From: Confirmation du compte de $pseudo <[email protected]>\nMime-Version:"; 
                    $from .= " 1.0\nContent-Type: text/html; charset=ISO-8859-1\n"; 
                    mail($mail,$titre,$contenu,$from); 
                  } else {
                     $erreur = "Vos mots de passes ne correspondent pas !";
                  }
               } else {
                  $erreur = "Adresse mail déjà utilisée !";
               }
            } else {
               $erreur = "Votre adresse mail n'est pas valide !";
            }
         } else {
            $erreur = "Vos adresses mail ne correspondent pas !";
         }
      } else {
         $erreur = "Votre pseudo ne doit pas dépasser 32 caractères !";
      }
   }else{
      $erreur = "Pseudo invalide";
   }
} else {
      $erreur = "Tous les champs doivent être complétés !";
   }
}
La connexion

if(!empty($_POST) && !empty($_POST['username']) && !empty($_POST['password'])){
   $pseudo = htmlspecialchars($_POST['username']);
               $requser = $bdd->prepare("SELECT * FROM membres WHERE mail = :username or users = :username");
               $requser->execute(array(":username" => $pseudo));
               $user = $requser->fetch();
    if(password_verify($_POST['password'], $user['password'])){
              updateLoginsLogs($user);
               $_SESSION['username'] = $user['users'];
              $_SESSION['mail'] = $user['mail'];
              $_SESSION['id'] = $user['id'];
              $_SESSION['grade'] = $user['grade'];
              $_SESSION['compteconfirmed'] = $user['confirmed'];
              $_SESSION['token_crsf'] = random(30);
      setFlash('Connexion réussie !', 'success');
      header('Location: ./');
}else{
   $erreur = "Mauvais mot de passe";
}
}
PS pour le Cout ( COST) regarde sur google y'a un script qui permet de trouver le bon Sourire

zoria

Messages: 2

Salut !

Merci à tous pour votre aide ça fonctionne à merveille !



Veuillez vous connecter ou créer un compte pour poster une réponse