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 :

Inscription - Connexion - Fonction md5() [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 16
    Par défaut Inscription - Connexion - Fonction md5()
    Bonjour,

    INTRODUCTION
    L'ors de l'inscription les membres inscrivent le pseudo et leurs mot de passe... Le mot de passe va dans la base de donnée avec MD5 soit md5()...
    J'ai vérifier que jusqu'ici c'est correct, mais l'ors de la connexion lorsque le membre entre son pseudo et son mot de passe, je convertit le mot de passe en MD5 aussi et je le compare avec celui de la base et même si il sont égaux sa affiche le message : CONNEXION ECHOUEE
    Et je certifie que le code ci-dessous foncxtionne avec un code non crypté (clair). Et en théorie il devrait fonctionner avec md5()

    TEST
    CECI EST UN EXEMPLE DE COMPTE

    Avec md5 54896585 = 875eh5tdcc81da7a423fde85352f435e

    Je tape robo pour le pseudo et 54896585 pour le mot de passe l'ors de l'inscription et je vérifie que dans la base de donnée, la table à bien un enregistremment
    avec unt mot de passe qui est 875eh5tdcc81da7a423fde85352f435e.

    L'ors de la connexion je tape robo pour le pseudo et 54896585 pour le mot de passe et je crype dans le code ci-dessous le mot de passe qui théoriquement devient
    875eh5tdcc81da7a423fde85352f435e et je le compare avec celui dans la base qui est également 875eh5tdcc81da7a423fde85352f435e. Mais je résultat est CONNEXION ECHOUEE

    Le code :

    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
     
    <?php
     
    //-->> RECEPTION DES CHAMPS
    $identifiant = $_POST['identifiant'];
    $mot_de_passe = $_POST['mot_de_passe'];
     
    //-->> MISE EN MINUSCULE DE L'IDENTIFIANT
    $identifiant = strtolower($identifiant);
     
    //-->> CRYPTAGE DU MOT DE PASSE
    $mot_de_passe = md5($mot_de_passe);
     
    //-->> PREPARATION
    function stripgpc($value)
    {
    	if(get_magic_quotes_gpc()) $value = stripslashes($value);
    	return $value;
    }
     
    //-->> SELECTION DU COMPTE
    $selection = sprintf("SELECT COUNT(*) as compte FROM inscription WHERE mot_de_passe ='%s' AND identifiant ='%s'",
    mysql_real_escape_string(stripgpc($_POST['mot_de_passe'])),
    mysql_real_escape_string(stripgpc($_POST['identifiant']))); 
     
    $query = mysql_query($selection) or die(mysql_error());
    $totalReponse = mysql_fetch_assoc($query);
     
    if ($totalReponse['compte'] == 1 )
    {
    	echo"CONNEXION REUSSI";
    }
    else 
    {
    	echo"CONNEXION ECHOUEE";
    }
     
    ?>
    Le résultat est donc CONNEXION ÉCHOUÉE

    Savez-vous pourquoi ?

    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Pourriez-vous modifier votre code pour :
    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
    error_reporting(E_ALL);
    ini_set('display_errors', '1');
    
    //-->> RECEPTION DES CHAMPS
    $identifiant = $_POST['identifiant'];
    $mot_de_passe = $_POST['mot_de_passe'];
     
    //-->> MISE EN MINUSCULE DE L'IDENTIFIANT
    $identifiant = strtolower($identifiant);
     
    //-->> CRYPTAGE DU MOT DE PASSE
    $mot_de_passe = md5($mot_de_passe);
     
    //-->> PREPARATION
    function stripgpc($value)
    {
    	if(get_magic_quotes_gpc()) $value = stripslashes($value);
    	return $value;
    }
     
    //-->> SELECTION DU COMPTE
    $selection = sprintf("SELECT *, COUNT(*) as compte FROM inscription WHERE mot_de_passe ='%s' AND identifiant ='%s'",
    mysql_real_escape_string(stripgpc($_POST['mot_de_passe'])),
    mysql_real_escape_string(stripgpc($_POST['identifiant']))); 
     
    $query = mysql_query($selection) or die(mysql_error());
    $totalReponse = mysql_fetch_assoc($query);
    var_dump($totalReponse);
     
    if ($totalReponse['compte'] == 1 )
    {
    	echo"CONNEXION REUSSI";
    }
    else 
    {
    	echo"CONNEXION ECHOUEE";
    }
    Et nous donner la sortie pour l'exemple de compte donné plus haut ?

    A l'insertion utilisez-vous la fonction md5 de PHP ou MySQL ?

  3. #3
    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,
    en plus de ce que julp vous demande, pouvez-vous afficher la structure de votre table MySQL ou uniquement les caractéristiques du champ qui stock la somme md5 des mots de passe?

    Sinon, en ce qui concerne une vérification de membre, schématiquement, cela se passe plutôt comme ça :

    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
    <?php
     
      $pseudo = 'test';
      $mdp = md5('test');
     
      if (!mysql_connect('localhost', 'darian', 'pass')
       || !mysql_select_db('db') 
       || !$res = mysql_query("SELECT `mdp` FROM `membres` WHERE `pseudo` = '$pseudo'"))
       die(mysql_error());   
     
      mysql_close();     
     
      if (mysql_num_rows($res) != 1) die('Ce membre n\'existe pas!');
      else if ($mdp != mysql_result($res, 0)) die('Echec de l\'identification!');
     
      echo 'Vous etes bien identifie!';
     
    ?>
    Cordialement,
    DaRiaN.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 16
    Par défaut
    Ha oui, désoler j'ai oublier d'inclure la connexion à mysql mais l'ors de mes test elle y était :

    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
    42
    43
    44
    45
     
    <?php
     
    //-->> CONNEXION A LA BASE DE DONNEE
    mysql_select_db('*****',mysql_connect('**********', '**********', '***************'));
     
    //-->> ???
    error_reporting(E_ALL);
    ini_set('display_errors', '1');
     
    //-->> RECEPTION DES CHAMPS
    $identifiant = $_POST['identifiant'];
    $mot_de_passe = $_POST['mot_de_passe'];
     
    //-->> MISE EN MINUSCULE DE L'IDENTIFIANT
    $identifiant = strtolower($identifiant);
     
    //-->> CRYPTAGE DU MOT DE PASSE
    $mot_de_passe = md5($mot_de_passe);
     
    //-->> PREPARATION
    function stripgpc($value)
    {
    	if(get_magic_quotes_gpc()) $value = stripslashes($value);
    	return $value;
    }
     
    //-->> SELECTION DU COMPTE
    $selection = sprintf("SELECT COUNT(*) as compte FROM inscription WHERE mot_de_passe ='%s' AND identifiant ='%s'",
    mysql_real_escape_string(stripgpc($_POST['mot_de_passe'])),
    mysql_real_escape_string(stripgpc($_POST['identifiant']))); 
     
    $query = mysql_query($selection) or die(mysql_error());
    $totalReponse = mysql_fetch_assoc($query);
     
    if ($totalReponse['compte'] == 1 )
    {
    	echo"CONNEXION REUSSI";
    }
    else 
    {
    	echo"CONNEXION ECHOUEE";
    }
     
    ?>
    J'utilise la fonction md5() de php

    Voici la table :

    CREATE TABLE `inscription_compte` (
    `identifiant` varchar(20) collate latin1_general_ci NOT NULL,
    `mot_de_passe` char(32) collate latin1_general_ci NOT NULL,
    `pseudo_forum` varchar(20) collate latin1_general_ci NOT NULL,
    `pseudo_chat` varchar(20) collate latin1_general_ci NOT NULL,
    `pseudo_blog` varchar(20) collate latin1_general_ci NOT NULL,
    `pseudo_article` varchar(20) collate latin1_general_ci NOT NULL,
    `question_secrete` varchar(30) collate latin1_general_ci NOT NULL,
    `reponse_secrete` varchar(30) collate latin1_general_ci NOT NULL,
    `date_heure_inscription` varchar(255) collate latin1_general_ci NOT NULL,
    `statut` varchar(255) collate latin1_general_ci NOT NULL,
    `code_compte` varchar(255) collate latin1_general_ci NOT NULL,
    `etat` varchar(255) collate latin1_general_ci NOT NULL,
    `fin_activation` varchar(10) collate latin1_general_ci NOT NULL,
    UNIQUE KEY `identifiant` (`identifiant`),
    UNIQUE KEY `pseudo_forum` (`pseudo_forum`),
    UNIQUE KEY `pseudo_chat` (`pseudo_chat`),
    UNIQUE KEY `pseudo_blog` (`pseudo_blog`),
    UNIQUE KEY `pseudo_article` (`pseudo_article`),
    UNIQUE KEY `code_compte` (`code_compte`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0;
    POUR la sortie de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    error_reporting(E_ALL);
    ini_set('display_errors', '1');
    Je doit d'abord modifier certaines chose sur mes script due à une remarque de l'un des membres d'un forum et je vous donne ça dés que possible.

    Merci

  5. #5
    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
    Ah, je vois votre problème, vous initialisez $identifiant et $mot_de_passe avec les valeurs du tableau $_POST, mais durant votre SELECT, vous réutilisez $_POST['identifiant'] et $_POST['mot_de_passe'].

    Donc, étant donné que vous avez utilisé la fonction md5, uniquement sur la variable $mot_de_passe et non sur $_POST['mot_de_passe'], votre requête ressemble à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) as compte FROM inscription WHERE mot_de_passe ='test' AND identifiant ='test'
    Donc vous comparez un mot avec la somme md5 d'un mot.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $selection = sprintf("SELECT COUNT(*) as compte FROM inscription WHERE mot_de_passe ='%s' AND identifiant ='%s'",
    mysql_real_escape_string(stripgpc($mot_de_passe)),
    mysql_real_escape_string(stripgpc($identifiant)));

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 16
    Par défaut
    Ah, oui effectivement, je me suis servi du POST...

    Je me disait bien que c'était une erreur de banal, en fait j'ai fait les mauvais tests, je m'imaginais un problème d'une plus grande ampleur, désoler...

    Merci à vous, bon dimanche...

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

Discussions similaires

  1. [ Windev 11 ] Classe Connexion fonction Requeter
    Par sterix92 dans le forum WinDev
    Réponses: 1
    Dernier message: 26/11/2007, 22h28
  2. [Expert][Cryptographie] Fonctions md5, rot13, etc.
    Par avogadro dans le forum Delphi
    Réponses: 16
    Dernier message: 15/02/2007, 09h39
  3. Réponses: 3
    Dernier message: 18/12/2006, 09h33
  4. [Cryptage]fonction MD5 en C++
    Par bouazza92 dans le forum C++
    Réponses: 8
    Dernier message: 22/01/2006, 23h17
  5. [Cryptage]Fonction MD5
    Par Belegkarnil dans le forum Sécurité
    Réponses: 2
    Dernier message: 17/12/2005, 12h33

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