[Résolu] Mot de passe et Mysql

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Ron56, 23 Mars 2006.

  1. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Je suis en train de creer un espace membre ,mais je rame avec les mots de passes !

    J'ai un formulaire d'inscription qui entre les donnée dans la base ,mais le mot de passe est crypté dans la base de donée , du coup quand je fait une verification comme cela :

    Code:
        if ($mot_de_passe == $data['mot_de_passe']) {
          $loginOK == true;
    $mot_de_passe ce qui a été saisi dans le formulaire d'identification
    $data['mot_de_passe'] le pass contenu dans la base

    Le problème est que $data['mot_de_passe'] est crypté et $mot_de_passe en clair , du coup on ne peut pas s'identifier ! :cry:


    Merci

    Ronan
     
  2. birkoss
    birkoss WRInaute discret
    Inscrit:
    1 Août 2005
    Messages:
    109
    J'aime reçus:
    0
    Salut

    Crypter comment ??

    si md5 : if ( md5($mot_de_passe) == $data['mot_de_passe']) {

    ++

    birkoss
     
  3. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Je ne sait pas comment il est crypté ! comment le savoir ? c'est fait de manière automatique :roll:
     
  4. birkoss
    birkoss WRInaute discret
    Inscrit:
    1 Août 2005
    Messages:
    109
    J'aime reçus:
    0
    Faut regarder dans ton formulaire qui ajoute les membres dans la base de données...car il existe plusieurs types de 'cryptage' de données.

    C'est p-e aussi un cryptage 'maison' fait par une fonction de ton code...
     
  5. Bourriquet
    Bourriquet WRInaute impliqué
    Inscrit:
    19 Septembre 2005
    Messages:
    561
    J'aime reçus:
    0
    Si y a 32 caractère, c'est certainement un md5.

    Sinon, si y en a 40 c'est certainement un sha1.

    Te suffit de compter le nombre de caractère ;)
     
  6. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Je rentre les données ainsi :

    $rq = "INSERT INTO utilisateurs (nom_utilisateur, prenom, nom, email,
    mot_de_passe, date_enreg) VALUES ('$u', '$p', '$n', '$e',
    PASSWORD('$mp'), NOW())";
     
  7. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
    et avec un lien vers la source :
    http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html
     
  8. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    16 caractères ! :wink:
     
  9. Bourriquet
    Bourriquet WRInaute impliqué
    Inscrit:
    19 Septembre 2005
    Messages:
    561
    J'aime reçus:
    0
    Ah bah c'est le chiffrement mysql.

    T'as qu'a faire une requête PHP :

    Code:
    SELECT PASSWORD(motdepassedonttuveuxlecryptage)
     
  10. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Pas compris comment l'utiliser , voila mon code :

    Code:
    // On va chercher le mot de passe afférent à ce login
      $sql = "SELECT id_utilisateur, nom_utilisateur, prenom, nom, email, date_enreg, mot_de_passe FROM utilisateurs WHERE nom_utilisateur = '".addslashes($nom_utilisateur)."'";
      $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
     
      // On vérifie que l'utilisateur existe bien
      if (mysql_num_rows($req) > 0) {
         $data = mysql_fetch_assoc($req);
    
           
        // On vérifie que son mot de passe est correct
        if ($mot_de_passe == $data['mot_de_passe']) {
          $loginOK == true;
          echo 'mot de passe correct!';
    
     
  11. Bourriquet
    Bourriquet WRInaute impliqué
    Inscrit:
    19 Septembre 2005
    Messages:
    561
    J'aime reçus:
    0
    Code:
    // On va chercher le mot de passe afférent à ce login
      $sql = "SELECT PASSWORD('".$mot_de_passe."') AS pass, id_utilisateur, nom_utilisateur, prenom, nom, email, date_enreg, mot_de_passe FROM utilisateurs WHERE nom_utilisateur = '".addslashes($nom_utilisateur)."'";
      $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
     
      // On vérifie que l'utilisateur existe bien
      if (mysql_num_rows($req) > 0) {
         $data = mysql_fetch_assoc($req);
    
           
        // On vérifie que son mot de passe est correct
        if ($data['pass'] == $data['mot_de_passe']) {
          $loginOK == true;
          echo 'mot de passe correct!';
    
    Par exemple ;)
     
  12. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
    1. Dans ton INSERT tu remplace PASSWORD par SHA1()
    2. Tu remplace ton code php par
    Code:
        // On vérifie que son mot de passe est correct
        if (sha1($mot_de_passe) == $data['mot_de_passe']) {
          $loginOK == true;
          echo 'mot de passe correct!';
    
    
     
  13. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Ca marche pas , ca fait depuis 15h que j'essaye :oops:

    Si je met les pass en clair c'est riqué ?
     
  14. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Si y en a qui s'ennui :lol: :

    Mon code :

    Code:
    <?php
    // On démarre la session
    session_start();
    $loginOK = false;  // cf Astuce
    
    //On se connecte via le fichier externe 
    
    include('../fonctions/sql_connect.php');
    
    // On n'effectue les traitement qu'à la condition que
    // les informations aient été effectivement postées
    if ( isset($_POST) && (!empty($_POST['nom_utilisateur'])) && (!empty($_POST['mot_de_passe'])) ) {
    
      extract($_POST);  // je vous renvoie à la doc de cette fonction
    
    
    // On va chercher le mot de passe afférent à ce login
      $sql = "SELECT id_utilisateur, nom_utilisateur, prenom, nom, email, date_enreg, mot_de_passe FROM utilisateurs WHERE nom_utilisateur = '".addslashes($nom_utilisateur)."'";
      $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
     
      // On vérifie que l'utilisateur existe bien
      if (mysql_num_rows($req) > 0) {
         $data = mysql_fetch_assoc($req);
    
             
        // On vérifie que son mot de passe est correct
        if (sha1($mot_de_passe) == $data['mot_de_passe']) {
          $loginOK == true;
          echo 'mot de passe correct!'; 
        }
      }
    }
    
    // Si le login a été validé on met les données en sessions
    if ($loginOK) {
      $_SESSION['id_utilisateur'] = $data['id_utilisateur'];
      $_SESSION['nom_utilisateur'] = $data['nom_utilisateur'];
      $_SESSION['prenom'] = $data['prenom'];
      $_SESSION['nom'] = $data['nom'];
      $_SESSION['email'] = $data['email'];
      $_SESSION['date_enreg'] = $data['date_enreg'];
    }
    else {
      echo 'Une erreur est survenue, veuillez réessayer !';
    }
    ?>
    

    Et le formulaire :

    Code:
    <form method="post" action="verifLogin.php">
       <table border="0" width="400" align="center">
        <tr>
         <td width="200"><b>Vôtre nom d'utilisateur</b></td>
         <td width="200">
          <input type="text" name="nom_utilisateur">
         </td>
        </tr>
        <tr>
         <td width="200"><b>Vôtre mot de passe<b></td>
         <td width="200">
          <input type="password" name="mot_de_passe">
         </td>
        </tr>
        <tr>
         <td colspan="2">
          <input type="submit" name="submit" value="login">
         </td>
        </tr>
       </table>
      </form>
    
     
  15. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
    tu as modifié ton INSERT ?
     
  16. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Voila le script d'enregistrement !

    Code:
    <?php # Listing 5.10 - enregistrer-2.php
    
    // Définir le titre de la page 
    $titre_page = "Enregistrement";
    
    
    if (isset($_POST['submit']))
    { // Traiter le formulaire
    
      // Créer une fonction pour échapper les données.
      function echappement ($data)
      { global $bd;                  // connexion nécessaire
        if (ini_get('magic_quotes_gpc')) 
        { $data = stripslashes($data);
        }
        return mysql_escape_string($data);
      } // fin de la fonction
    
      include('../fonctions/sql_connect.php');
      $message = NULL;                            // créer une variable vide
    
      // Vérifier la présence d'un prénom
      if (empty($_POST['prenom']))
      { $p = FALSE;
        $message .= '<p>Vous avez oublié d\'indiquer votre prénom</p>';
      }
      else
      { $p = echappement($_POST['prenom']);
      }
    
      // Vérifier la présence d'un nom
      if (empty($_POST['nom']))
      { $n = FALSE;
        $message .= '<p>Vous avez oublié d\'indiquer votre nom</p>';
     }
      else
      { $n = echappement($_POST['nom']);
      }
    
      // Vérifier l'existence d'une adresse e-mail
      if (empty($_POST['email']))
      { $e = FALSE;
        $message .= '<p>Vous avez oublié d\'indiquer votre adresse e-mail</p>';
      }
      else
      { $e = echappement($_POST['email']);
      }
    
      // Vérifier la présence d'un nom d'utilisateur
      if (empty($_POST['nom_utilisateur']))
      { $u = FALSE;
        $message .= '<p>Vous avez oublié d\'indiquer votre nom d\'utilisateur</p>';
      }
      else
      { $u = echappement($_POST['nom_utilisateur']);
      }
    
      // Vérifier l'existence et l'exactitude du mot de passe
      if (empty($_POST['mot_de_passe1']))
      { $mp = FALSE;
        $message .= '<p>Vous avez oublié d\'indiquer votre mot de passe</p>';
      }
      else
       { if ($_POST['mot_de_passe1'] == $_POST['mot_de_passe2'])
         { $mp = echappement($_POST['mot_de_passe1']);
         }
         else
         { $mp = FALSE;
           $message .= '<p>Votre mot de passe est différent de celui que vous avez précédemment déclaré</p>';
         }
      }
    
      if ($p && $n && $e && $u && $mp)                // Si tout est correct
      { // Voir si l'utilisateur existe déjà
    $ver=mysql_query("SELECT id_utilisateur FROM utilisateurs where nom_utilisateur='$u'");
    $verif=mysql_num_rows($ver);
    if($verif=='0')
          { // créer une nouvelle requête
          $rq = "INSERT INTO utilisateurs (nom_utilisateur, prenom, nom, email,
                mot_de_passe, date_enreg) VALUES ('$u', '$p', '$n', '$e',
                SHA1('$mp'), NOW())";
          // lancer la requête d'enregistrement
          $result = mysql_query($rq);
          if ($result)                      // Si l'enregistrement est correct
          { // Envoyer éventuellement un e-mail
            echo "<p><b>Merci de vous être enregistré sur notre site.</b></p>";
            exit();                             // terminer le script
          }
          else
          { echo "<p>Vous n'avez pas pu être enregistré à cause d'une erreur système".
                 "<p></p>" . mysql_error() . "<p></p>";
          }
        }
        else
        { $message .= "<p>Nom d'utilisateur déjà utilisé</p>";  
        }
        mysql_close();           // refermer la connexion avec la base de données
      }
      else
      { // Quelque chose n'est pas correct
        $message .= "<p>Veuillez avoir l'obligeance de recommencer</p>";
      }
    }
    
    // Afficher éventuellement un ou plusieurs messages d'erreur
    if (isset($message))
    { echo "<font color='red'>$message</font>";
    }
    ?>
    
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <fieldset>
    <legend>Veuillez renseigner le formulaire ci-dessous :</legend>
    
    <p><b>Prénom :</b>
    <input type="text" name="prenom" size="15" maxlength="15" 
           value="<?php if (isset($_POST['prenom'])) echo $_POST['prenom']; ?>"/>
    </p>
    
    <p><b>Nom :</b>
    <input type="text" name="nom" size="30" maxlength="30"
           value="<?php if (isset($_POST['nom'])) echo $_POST['nom']; ?>"/>
    </p>
    
    <p><b>Adresse e-mail :</b>
    <input type="text" name="email" size="40" maxlength="40" 
           value="<?php if (isset($_POST['email'])) echo $_POST['email']; ?>"/>
    </p>
    
    <p><b>Nom d'utilisateur :</b>
    <input type="text" name="nom_utilisateur" size="10" maxlength="20"
           value="<?php if (isset($_POST['nom_utilisateur'])) 
                  echo $_POST['nom_utilisateur']; ?>"/>
    </p>
    
    <p><b>Mot de passe :</b>
    <input type="password" name="mot_de_passe1" size="20" maxlength="20" />
    </p>
    
    <p><b>Confirmez votre mot de passe :</b> 
    <input type="password" name="mot_de_passe2" size="20" maxlength="20" />
    </p>
    </fieldset>
    
    <div align="center">
    <input type="submit" name="submit" value="Envoyer les informations" />
    </div>
    
    </form><!-- Fin du formulaire -->
    
    <?php
    // Fin de l'instruction conditionnelle principale
    
    ?>
    
    
     
  17. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
    Essaye SHA1($mp) à la place de SHA1('$mp')

    PHP
    <? echo( sha1("tutu") ?>
    => 32a89bdcec2d50f9dc9747cd47ecfc14cf9c3dbe

    mySQL
    SELECT SHA1("tutu");
    => 32a89bdcec2d50f9dc9747cd47ecfc14cf9c3dbe

    la comparaison entre les 2 chaines doit marcher
     
  18. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    :cry: :cry: :cry:
     
  19. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Alors :) , Il reconnait le mot de passe , car le message suivant s'affiche :

    Mais :oops: , j'ai quand meme un bug car j'ai aussi ce méssage

     
  20. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
    c'est quoi la taille de ton champ mot_de_passe ?
     
  21. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0

    C'était ca qui buggait :oops: , je l'ai mis a 100 , je suis trankil ! :wink:

    Mais le petit bug doit forcement venir ce cet portion de code :

    Code:
    // Si le login a été validé on met les données en sessions
    if ($loginOK) {
      $_SESSION['id_utilisateur'] = $data['id_utilisateur'];
      $_SESSION['nom_utilisateur'] = $data['nom_utilisateur'];
      $_SESSION['prenom'] = $data['prenom'];
      $_SESSION['nom'] = $data['nom'];
      $_SESSION['email'] = $data['email'];
      $_SESSION['date_enreg'] = $data['date_enreg'];
    }
    else {
      echo 'Une erreur est survenue, veuillez réessayer !'; 
     
  22. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
    40 aurait suffit.
    Ensuite, c'est du php je passe la main a plus compétent que moi :)
     
  23. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Merci beacoup , tu m'as vraiment débloquer la :) , j'ai recommender tes messages ! :wink:
     
  24. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
    C'est pas un simple = qu'il faut là ?
    Code:
    // On vérifie que son mot de passe est correct
        if ($mot_de_passe == $data['mot_de_passe']) {
          $loginOK == true;
          echo 'mot de passe correct!'; 
    
    $loginOK = true ? C'est pas ça le pb ?
     
  25. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    je pense pas je vais essayer :wink:
     
  26. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Au tout départ on défini login false , si le mot de passe est bon on définit login true et apres si login est true on creer la session :wink:
     
  27. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
    ça fait longtemp que je ne fait plus de php mais :

    == => comparaison
    = => affectation

    J'ai tout faut là ?
    j'écrirais $loginOK = true ;
     
  28. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Code:
          $loginOK = true;
          echo 'mot de passe correct!'; 
        }
      }
    }
    
    // Si le login a été validé on met les données en sessions
    if ($loginOK = true) {
    Ca marche
     
  29. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
    Ouf ! Tu m'as fait peur :mrgreen:
     
Chargement...
Similar Threads - [Résolu] Mot Mysql Forum Date
[Résolu] Dailymotion : Supprimer les pubs sur MES vidéos Autres réseaux sociaux 8 Juillet 2013
[Résolu] Existe t'il un logiciel pour générer ses mots clés composés AdWords 7 Juin 2010
[Résolu] Comment gérer un changement de nom de domaine pour les moteurs ? Débuter en référencement 10 Février 2010
[résolu]Comment empêcher les moteurs d'indexer un site en construction? Demandes d'avis et de conseils sur vos sites 8 Octobre 2009
[résolu] Googlebot fait pleins de recherche dans mon moteur Administration d'un site Web 5 Mars 2009
[résolu] disque dur portable dell protegé par mot de passe Le café de WebRankInfo 29 Août 2008
[résolu]dailymotion et phpdirector Développement d'un site Web ou d'une appli mobile 20 Juillet 2008
[RESOLU] Un petit moteur de recherche pour mon site :-) Développement d'un site Web ou d'une appli mobile 11 Avril 2008
[RESOLU] Moteur de recherche interne et référencement google Problèmes de référencement spécifiques à vos sites 8 Décembre 2007
[Résolu] Moteur de recherche interne et les accents Développement d'un site Web ou d'une appli mobile 17 Octobre 2007
[RESOLU].htaccess pour changement de domaine et de moteur de URL Rewriting et .htaccess 28 Septembre 2007
[Resolu] Résultat d'un $_SERVER["REMOTE_ADDR"] dan Développement d'un site Web ou d'une appli mobile 27 Mai 2007
[résolu] "de" dans les mots clés Débuter en référencement 1 Septembre 2006
[résolu]position des mots clés et CSS Référencement Google 17 Février 2006
[Résolu] mot de passe rejeté : problème avec .htaccess ou .h URL Rewriting et .htaccess 5 Février 2006
[Résolu] Moteur de recherche pour un site Administration d'un site Web 5 Avril 2005
Problème images en https (forum phpbb) [résolu] Développement d'un site Web ou d'une appli mobile 18 Novembre 2017
[Résolu] Redirection 301 FR vers EN sur Prestashop uniquement sur outils Google ? Problèmes de référencement spécifiques à vos sites 11 Septembre 2017
[résolu] Passage à HTTPS, comment tester une page ? Développement d'un site Web ou d'une appli mobile 7 Septembre 2017
[Résolu] Redirection d'une famille d'URL URL Rewriting et .htaccess 9 Mars 2017