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 :

[SQL] md5 et base de données


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut [SQL] md5 et base de données
    Bonjour,
    j'ai une page web d'identification en php avec le formualaire en html.
    Voici mon formulaire:
    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
     <form method="post" action = "index.php">
    		 <table>
    					 <tr>
    				 	 <td>Nom utilisateur:</td>
    					 <td><input type="username" name="nomutilisateur"></td>
    					 </tr>
     
    					 <tr>
    				     <td> Mot de passe:</td>
    					 <td><input type="password" name="pass"></td>
    					 </tr>   
    						<div id="btnouvrirsession">	  
    					 <tr>
    					 <td><input type="submit" value="Ouvrir une session" style="color:#99CCFF; background-color:#3399FF;"/	></td>
    					 </tr>
    				  </div>
    		</table>
       </form>
    Aprés je fais un traitement pour comparer les données insérées avec celle de la base de données.
    Voici le code php:
    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
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
    //reprise des valeurs insérées dans le text box
     
    $nomutilisateur = $_POST["nomutilisateur"];
    $pass = $_POST["pass"];
     
     
     
    //on va dans la table pour voir si l'utilisateur est dans la table
    //pseudo et mdp correspondent aux noms des colonnes dans ma table user 
    // 
     
    $requete = "SELECT * FROM admin WHERE login_admin = '".$nomutilisateur."' AND mdp_admin = '".$pass."'";
    $resultat = mysql_query($requete);
    $nbres = mysql_num_rows($resultat);
     
    //la requête est bien exécutée puisqu'elle affiche un c'est à dire que une ligne comporte cet utilisateur
     
     
     
    if ( $nbres == 0 ) //on scann la table pour voir si l'utilisateur est présent
    {//si non alors
        echo '';
    }
    else
     
    {//si oui
    $_SESSION['user'] = 'ok';
    //la redirection ce fait en javascript car il y a des echo avant ce qui empêche surement le header de bien fonctionner
    echo '
    <script language="javascript" type="text/javascript">
    document.location = "first.php";
    </script>
    ';
    }
     
    //$date = date("d-m-Y");
    //$heure = date("H:i:s");
    //echo ("Nous sommes le $date et il est $heure");
     
    ?>
    Ma question est la suivante:
    comment puis je crypter les mots de passe que j'ai déjà dans ma base de données en md5?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut
    Comme cela il me semble:

    $pass=md5($_POST["pass"]);


  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    Je rentre le mot de passe et avec ta technique ça doit le transformer direct en format md5.
    Mais les mots de passe dans la base de données eux ne sont pas du tout en md5. Donc quand il compare c'est faux et je ne peux pas accéder aux autres pages de mon site.

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Par défaut
    Salut,

    La foncton md5 existe aussi sous mysql donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update matable set motdepasse = md5(motdepasse)

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    Alors j'ai fait comme tu m'as indiqué
    update personne set mdp = 'md5(motdepasse)';
    avec personne le nom de la table
    mdp le nom de la colonne
    et
    motdepasse le mot de passe
    mais est ce normal que maintenant dans ma colonne mdp
    tous les mots de passe sont notés comme ca md5(motdepasse)?

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Par défaut
    C'est pcq tu as mis des ' autour de md5(motdepasse). La requête a donc mis la chaine de caractères 'md5(motdepasse)' au lieu d'appeler la fonction md5 avec l'argument motdepasse

  7. #7
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    Si je ne mets pas les '' il prend le mot de passe pour le nom d'une colonne
    #1054 - Unknown column 'motdepasse' in 'field list'

  8. #8
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    Ok j'ai trouvé
    update personne set mdp = md5('motdepasse');
    ca a bien haché mais c'est le même code a toute les lignes

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonjour,
    si vous voulez crypter tous les mots de passe de votre table, vous devez vous assurer de modifier le champ `mdp` de votre table et de le rendre compatible avec le resultat de la fonction MD5. Ensuite, tapez la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `personne` SET `mdp` = MD5(`mdp`);
    Avec cette requête, si vous avez 10.000 membres, les 10.000 mots de passe seront cryptés.

    Cordialement,
    DaRiaN.

  10. #10
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    dans ce cas la il faut les faire un par un?

  11. #11
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Par défaut
    dans mon exemple, motdepase est un champ , donc :

    update matable set motdepasse = md5(motdepasse)

    veut dire :
    mettre à jour la table matable en mettant dans le champ motdepasse la valeur retournée par la fonction md5() avec, comme valeur de paramètre, le contenu du champ motdepasse et ceci pour tous les enregistrements.

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Citation Envoyé par luciedoudou Voir le message
    dans ce cas la il faut les faire un par un?
    Non, ma requête effectue la modification sans discrimination, si vous voulez limiter à un utilisateur, utilisez la clause WHERE.

  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    Citation Envoyé par luciedoudou Voir le message
    Ok j'ai trouvé
    update personne set mdp = md5('motdepasse');
    ca a bien haché mais c'est le même code a toute les lignes
    je trouve que c'est normal. Puisque
    • Primo tu as mal executé la requete update sur la colonne et de ce fait tous les elements de la colonne ont eu la meme valeur a savoir md5(motdepasse).
    • secundo en faisant la bonne requete, c'est normal que tu obtiennes le meme hash (puisque ce sont des valeurs identiques)

  14. #14
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    Ben du coup comment puis je faire pour que chaque mot de passe ai sa propre signature md5 faut il que je m'y prenne ligne par ligne?

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Est ce que vous m'écoutez?

    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
    mysql> create table m
        -> (
        -> m char(32) not null
        -> )
        -> ;
    Query OK, 0 rows affected (0.00 sec)
     
    mysql> insert into m values ('titi'), ('toto');
    Query OK, 2 rows affected (0.00 sec)
    Records: 2  Duplicates: 0  Warnings: 0
     
    mysql> select * from m;
    +------+
    | m    |
    +------+
    | titi |
    | toto |
    +------+
    2 rows in set (0.00 sec)
     
    mysql> update m set m = md5(m);
    Query OK, 2 rows affected (0.00 sec)
    Rows matched: 2  Changed: 2  Warnings: 0
     
    mysql> select * from m;
    +----------------------------------+
    | m                                |
    +----------------------------------+
    | 5d933eef19aee7da192608de61b6c23d |
    | f71dbe52628a3f83a77ab494817525c6 |
    +----------------------------------+
    2 rows in set (0.00 sec)

  16. #16
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Par défaut
    Luciedoudou, tu devrais sans doute lire au minimum un tutoriel sur le SQL et c'est pas ça qui manque ici. Pcq ton problème est plus que trivial et la réponse t'a été donnée au moins 5 fois dans les posts précédents.

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

Discussions similaires

  1. [SQL SERVER 2000] Base de donnée non relationnelle
    Par Phenomenium dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 31/03/2008, 10h39
  2. [SQL] obtenir le fichier .sql d'une base de données
    Par ca_mido dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/09/2007, 11h03
  3. [SQL] Identifiant dans base de données
    Par liloupisou dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/07/2007, 12h53
  4. [SQL] Importer un fichier .sql dans une base de données avec PHP
    Par budiste dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2006, 14h15
  5. [sql]analyse de base de données
    Par maxvador dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/07/2003, 12h11

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