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

PHP & Base de données Discussion :

problème de MD5 [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut problème de MD5
    bonjour

    voila je suis confronter à un soucis avec mon code qui suis
    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
    25
    <?php
    $mdp = md5($_POST['password']);
     
             if(isset($_POST['connexion']) && !empty($_POST['login']) && !empty($_POST['password']))
             {
                 $link=mysql_connect("localhost","root","xxxxxxxxx")or die("Connexion impossible".mysql_error());
                 mysql_select_db("lanbox")or die("Selection de la base impossible");
     
     
                 $query = "SELECT * FROM admin WHERE username='". mysql_real_escape_string($_POST['login']) ."' AND password='". mysql_real_escape_string($mdp) ."' ;";
                 $result = mysql_query($query) or die ('Erreur lors de la requête '.mysql_error());
                 if(mysql_num_rows($result))
                 {
                    $donnees = mysql_fetch_array($result);
     
    				$_SESSION['username'] = $donnees['username'];
    				$_SESSION['password'] = $donnees['password'];
    			 }
             }
     
    		 if(isset($_SESSION['username']) && isset($_SESSION['password']))
    		 {
    		 	echo "<p> Bonjour ".$_SESSION['username']."</p>";
    		 }
    ?>
    si une personne pouvait m'éclairai sur la lecture du code md5

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    et quel est le probleme ?

    pour partager du code c'est la balise code pas citation.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Ben le problème ces que sa ne fonctionne pas , sinon je n'aurais pas postez.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par snooppy Voir le message
    Ben le problème ces que sa ne fonctionne pas , sinon je n'aurais pas postez.
    oui mais plus précisément...
    un message d'erreur ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    aucun code erreur j'ai une page blanche

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    à chaque if associe un else avec un message d'erreur

  7. #7
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Bonjour,

    Je placerais un
    juste après l'affectation de cette variable, histoire de voir à quoi ressemble la requête SQL.

    Fred

  8. #8
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 416
    Par défaut
    Dans un premier temps suis les conseils de stealth35.

    Ensuite vérifies que get_magic_quotes gpc est désactivé sur ton serveur sinon aurait des problèmes avec des mots de passe contenant des guillemets simples, guillemets doubles, ou antislash.


    EDIT : j'avais pas vu la réponse de micetf qui est aussi un bon conseil (notamment un ; dans la requête semble suspect)

  9. #9
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Par défaut
    Bonsoir,
    je crois que tu devrais changer cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(mysql_num_rows($result))
    par ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(mysql_num_rows($result)>0)

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 416
    Par défaut
    Citation Envoyé par vaan3713 Voir le message
    Bonsoir,
    je crois que tu devrais changer cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(mysql_num_rows($result))
    par ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(mysql_num_rows($result)>0)
    Ce n'est pas l'origine du pb car pour toute valeur numérique supérieure à 0,
    la condition va retourner vrai. Donc dans cet exemple les deux codes sont équivalents (même si le tiens est plus lisible)

  11. #11
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Ce n'est pas l'origine du pb car pour toute valeur numérique supérieure à 0,
    la condition va retourner vrai. Donc dans cet exemple les deux codes sont équivalents (même si le tiens est plus lisible)
    Hum... oui c'est vrai que si la condition retourne un nombre supérieur à 0 ça sera pris pour un TRUE (merci ^^)
    au fait je pense qu'il a oublier de faire un au début

  12. #12
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 416
    Par défaut
    Citation Envoyé par vaan3713 Voir le message
    au fait je pense qu'il a oublier de faire un au début
    Vrai, mais ce n'est pas non plus l'origine du pb actuel, car si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION['username'] = 'toto';
    echo $_SESSION['username'];
    tu auras bien 'toto' afficher même s'il n'y a pas "session_start" déclaré auparavant.

    Donc dans la logique de son code, pour l'instant - et tant qu'il ne cherche pas à récupérer cette valeur dans d'autres pages - ça ne provoquera pas d'erreur.

    Par contre il ne pourrait pas récupérer $_SESSION['username'] dans ses autres pages. Il faut déclarer session_start avant toute définition d'une variable de session, sinon php la considère comme une variable locale. Si ta remarque n'est pas utile pour la résolution de son problème actuel, elle est donc effectivement indispensable pour la suite

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Bonjour ,

    de retour , je vous remercie par avance de certains conseil et autre au sujet de mon soucis voici la totalité du code que j'ai rajouter hier .

    Avec l'utilisation du code pour lire le password en claire la page fonctionne nickel ! mais pas avec la solution que j'ai modifier ci dessus.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php session_start(); ?>
    <?php
     
             if(isset($_POST['connexion']) && !empty($_POST['login']) && !empty($_POST['password']))
             {
                 $link=mysql_connect("localhost","root","p5snS4KqKUHFFN67")or die("Connexion impossible".mysql_error());
                 mysql_select_db("lanbox")or die("Selection de la base impossible");
     
     
                 $query = "SELECT * FROM admin WHERE username='".mysql_real_escape_string($_POST['login'])."' AND password='".mysql_real_escape_string($_POST['password'])."' ;";
                 $result = mysql_query($query) or die ('Erreur lors de la requête '.mysql_error());
                 if(mysql_num_rows($result))
                 {
                    $donnees = mysql_fetch_array($result);
     
    				$_SESSION['username'] = $donnees['username'];
    				$_SESSION['password'] = $donnees['password'];
    			 }
             }
     
    		 if(isset($_SESSION['username']) && isset($_SESSION['password']))
    		 {
    		 	echo "<p> Bonjour ".$_SESSION['username']."</p>";
     
    ?>
    <?php
    		 }
             else
             {
                include("formulaire_connexion.html");
             }
     
    ?>
    donc es ce du à ma page html ?

  14. #14
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    A priori, cela signifie que dans ta BD
    ce ne sont pas les MD5 des mots de passe qui sont stockés,
    mais les mots de passe en clair.

    Dans ce cas,
    une requête
    qui cherche un enregistrement
    dont le champ mot de passe est égal au md5 du mot de passe saisi
    ne trouve rien, c'est normal.


    Fred

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    non , le passe est bien crypter : 7c4a8d09ca3762af61e59520943dc26494f8941b

    cependant j'ai testez des convertisseur sur internet mais sa ne correspond pas au passe qui est classique : 123456

    donc comment voir en quoi il est crypter ?

  16. #16
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par snooppy Voir le message
    non , le passe est bien crypter : 7c4a8d09ca3762af61e59520943dc26494f8941b

    cependant j'ai testez des convertisseur sur internet mais sa ne correspond pas au passe qui est classique : 123456

    donc comment voir en quoi il est crypter ?
    c'est du sha1

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Ah ok merci pour l'info , connais pas.

  18. #18
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 416
    Par défaut
    Donc ta requête sera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $query = "SELECT * FROM admin WHERE username='".mysql_real_escape_string($_POST['login'])."' AND password='".mysql_real_escape_string(sha1($_POST['password']))."'";
    la doc c'est ici

    Le sha1 est plus performant que le md5 et doit normalement être privilégié par rapport au md5 qu'on ne devrait plus employé maintenant dans les nouveaux projets.

    Pour info mysql_real_escape_string ne sert à rien sur du sha1 car il n'y aura aucun caractère à échappé. Cela dit, ça ne gène pas et comme c'est une bonne habitude à prendre que d'utiliser systématiquement mysql_real_escape_string...

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Merci à vous 2 , sa à fonctionner enfin ...... effectivement avec la bonne ligne de commande sa fonctionne mieux ces placer en résolu merci ABCIWEB pour le code

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Ok merci pour les info , je vais m'y mettre pour la suite .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème hash md5
    Par brice97431 dans le forum Zend Framework
    Réponses: 2
    Dernier message: 17/04/2012, 09h27
  2. Problème programmation md5
    Par deltabweb dans le forum Windows
    Réponses: 15
    Dernier message: 20/01/2008, 19h06
  3. Réponses: 3
    Dernier message: 18/12/2006, 09h33
  4. Problème ave l'Algorithme MD5
    Par Lofwyr^ dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 04/12/2006, 16h14
  5. MD5 problème de vérification
    Par nicotine002 dans le forum Langage
    Réponses: 9
    Dernier message: 21/08/2006, 17h35

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