IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[MD5] Comparer 2 chaînes de caractères


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 72
    Par défaut [MD5] Comparer 2 chaînes de caractères
    Bonjour,

    la solution est certainement simple mais je n'y arrive pas.

    j'ai deux chaînes de caractères produites par la fonction de cryptage md5().
    elles sont sauvées dans 2 variables du style $mdp1=md5("password"); .

    comment vérifier leur égalité et inégalité ?

    même si elles sont égales (vérifié par affichage), le test "$mdp1 != $md2" est toujours accepté.
    j'ai essayé la fonction strcmp($mdp1,$mdp2), elle retourne apparemment toujours -18 lorsqu'elles sont égales et 1 ou -1 sinon (testé avec différents mots de passe).
    que fait-t-elle exactement, elle compare les tailles des chaines ? (qui est toujours la même avec le md5, non?)

    y a-t-il une fonction qui m'aie échappée?

    merci d'avance

    à bientôt

  2. #2
    Membre chevronné Avatar de johweb
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Par défaut
    Peux-tu nous donner un extrait de ton code ?

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 72
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    $login = $_POST["login"];
    $mdp = $_POST["mdp"];
     
    $query = 'SELECT * FROM Compte WHERE Login_Com="'.$login.'"';
    $result = mssql_query($query, $id_connexion);
     
    if( mssql_num_rows($result)==0 )
    {
      $error = "Erreur d'authentification (login incorrecte) ! Veuillez réessayer !";
    }
    else
    {
      $mdpcrypt = md5($mdp);
      $compte = mssql_fetch_array($result);
      if( $mdpcrypt != $compte["Mdp_Com"] )
      {
         $error = "Erreur d'authentification (mot de passe incorrecte) ! Veuillez réessayer !";
      }
      else
      {
        $error = "C'est bon!!!!";
      }
    }
    Je compare donc une chaine provenant d'une variable Post (puis cryptée) et un champ provenant d'une requête SQL (mdp crypté).

  4. #4
    Membre chevronné Avatar de johweb
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Par défaut
    Si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $login = $_POST["login"];
    $mdp = $_POST["mdp"];
     
    $query = 'SELECT * FROM Compte WHERE Login_Com="'.$login.'"';
    $result = mssql_query($query, $id_connexion);
     
    if( mssql_num_rows($result)==0 )
    {
      $error = "Erreur d'authentification (login incorrecte) ! Veuillez réessayer !";
    }
    else
    {
      $mdpcrypt = md5($mdp);
      $compte = mssql_fetch_array($result);
      echo $compte["Mdp_Com"];
    }
    peux-tu nous dire si tu as bien une valeur d'affichée ?

  5. #5
    Membre éclairé Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Par défaut
    Tu peux aussi tester directement dans ta requete sql:
    SELECT * FROM Compte WHERE Login_Com="'.$login.'" And Mdp_Com="'.md5($_POST['mdp']).'"

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 72
    Par défaut
    Citation Envoyé par nicoaix
    Tu peux aussi tester directement dans ta requete sql:
    SELECT * FROM Compte WHERE Login_Com="'.$login.'" And Mdp_Com="'.md5($_POST['mdp']).'"
    En attendant de trouver mieux, je fais comme ca. Ca fonctionne.

    Mais pourquoi, ca ne veux pas avec l'autre solution???

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 72
    Par défaut
    déjà, merci de vos réponses.

    Citation Envoyé par johweb
    peux-tu nous dire si tu as bien une valeur d'affichée ?
    et oui, j'ai comme prévu une chaine de 32 caractères.

    Citation Envoyé par nicoaix
    Tu peux aussi tester directement dans ta requete sql:
    SELECT * FROM Compte WHERE Login_Com="'.$login.'" And Mdp_Com="'.md5($_POST['mdp']).'"
    oui, je pourrais aussi mais ca m'empecherais de savoir si c'esl le login ou le mot de passe qui est faux.
    mais si je n'arrive pas autrement, j'essaierai comme ca.

  8. #8
    Membre éclairé Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Par défaut
    C'est assez bizarre ton problème.
    J'utilise un principe similaire au tien et ca fonctionne sans problème.
    Regarde ce que te retournes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo $mdpcrypt;
    echo "<br />";
    echo $compte["Mdp_Com"];
    Verifie si les 2 chaines sont au moins similiaires.
    Fait un echo sur $mdp aussi, voir si cela correspond bien à ce que tu as entré.

    ++
    ShinJava

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/07/2008, 20h31
  2. Comparator et chaînes de caractères
    Par Llaur76 dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2007, 11h16
  3. Comparer deux chaînes de caractère
    Par natie_49 dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2007, 11h53
  4. Comparer deux chaînes de caractères
    Par camoa dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 10/12/2006, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo