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 :

aide pour une authentification [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut aide pour une authentification
    Bonjour,

    Je tente depuis un moment de créer une authentification en PHP avec cryptage du mot de passe avec la fonction md5 (il parait que c'est facile, mais quand on débute ça ne l'est pas tant que ça! ). J'aurais besoin de votre aide car je rencontre un problème. Quand je teste ma page voici le message qui s'affiche:
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /mnt/125/sdb/b/8/agnesgilly/test/validate.php on line 26
    identifiant ou mot de passe invalide.
    voici mon 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
     
    <?php 
    include("connexion.php"); 
     
    //Connection à mysql et sélection de la base de données 
    $select = mysql_select_db($utilisateur); 
     
    //Préparation de la requête
     $query = "SELECT * FROM utilisateur 
    WHERE Login=".$_POST['Login']." AND MotPasse=md5(".$_POST['MotPasse'].")"; 
     
     
    //exécution de la requête et récupération du nombre de résultats 
    $result = mysql_query($query); 
    $num_rows = mysql_num_rows($result);//voici la ligne 26 
     
    //S'il y a exactement un résultat, l'utilisateur est authentifié, sinon, on l'empêche d'entrer 
    if($num_rows == 1) { 
    echo 'Vous êtes authentifié'; 
    } 
    else 
    { 
    echo 'identifiant ou mot de passe invalide.'; 
    } 
    ?>
    J'ai commenté la ligne 26 pour que vous puissiez la repérer facilement.
    Votre aide sera précieuse

    Caroline.

  2. #2
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    Cette erreur est typique d'une erreur de syntaxe dans la requête. Vous devez vérifier le résultat de votre requête MySQL avant d'aller plus loin dans votre script. Ce que vous pouvez aisément réaliser en exploitant la valeur retournée par la fonction mysql_query, en ajoutant derrière or die(mysql_error()); par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //Préparation de la requête
    $query = "SELECT * FROM utilisateur 
    WHERE Login='".mysql_real_escape_string($_POST['Login'])."' AND MotPasse=md5('".mysql_real_escape_string($_POST['MotPasse'])."')"; 
     
    //exécution de la requête et récupération du nombre de résultats 
    $result = mysql_query($query) or die(mysql_error());
    Je vous encourage à protéger vos données d'une injection lors d'une requête par la fonction mysql_real_escape_string (elle permet également de s'affranchir des erreurs de syntaxe liées aux caractères spéciaux).

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut réponse
    Bonjour et merci pour votre réponse!
    En effet, elle me règle mon problème , mais malhereusement j'en rencontre un nouveau.

    Le code est maintenant comme ceci:
    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
     
     
     
    <?php 
    include("connexion.php"); 
     
     
    //Connection à mysql et sélection de la base de données 
    $select = mysql_select_db($utilisateur); 
     
    //Préparation de la requête et protection des données 
     
    $query = "SELECT * FROM utilisateur  
    WHERE Login='".mysql_real_escape_string($_POST['Login'])."' AND MotPasse=md5('".mysql_real_escape_string($_POST['MotPasse'])."')"; 
     
    //exécution de la requête et récupération du nombre de résultats 
    $result = mysql_query($query) or die('erreur '.mysql_error()); 
    $num_rows = mysql_num_rows($result); 
     
     
    //S'il y a exactement un résultat, l'utilisateur est authentifié, sinon, on l'empêche d'entrer 
    if($num_rows == 1) { 
    echo 'Vous êtes authentifié'; 
    } 
    else 
    { 
    echo 'identifiant ou mot de passe invalide.'; 
    } 
     
    ?>
    Maintenant quand je fais le test avec mon login et mot de passe, il ne me reconnait pas...

    c'est à n'y rien comprendre. Je vous remercie encore une fois et par avance pour votre aide et votre rapidité de réponse!

    Caroline.

  4. #4
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    Est-ce que par hasard lors de la création du compte vous n'utiliseriez pas une autre fonction md5 (celle de PHP) ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut réponse
    En fait j'ai directement inséré le login et le mot de passe dans la base de données.

    Pour mon développement cette authentification sert de démonstration, je n'ai pas créé de formulaire d'inscription...Peut-être que le problème se trouve dans ma base de données...où devrais-je regarder?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut réponse
    ça y est, j'ai trouvé l'erreur!

    En fait, j'avais tellement la tête dans le code que j'avais oublié de md5iser mon mot de passe dans la base...

    Tout marche bien maintenant avec ce 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
     
    <?php 
    include("connexion.php"); 
     
     
    //Connection à mysql et sélection de la base de données 
    $select = mysql_select_db($utilisateur); 
     
    //Préparation de la requête et cryptage du mot de passe 
    $query = "SELECT * FROM utilisateur     
    WHERE Login='".mysql_real_escape_string($_POST['Login'])."' AND MotPasse='".md5($_POST['MotPasse'])."'";  
     
    //exécution de la requête et récupération du nombre de résultats 
    $result = mysql_query($query) or die('erreur '.mysql_error()); 
    $num_rows = mysql_num_rows($result); 
     
     
    //S'il y a exactement un résultat, l'utilisateur est authentifié, sinon, on l'empêche d'entrer 
    if($num_rows == 1) { 
    echo 'Vous êtes authentifié'; 
    } 
    else 
    { 
    echo 'identifiant ou mot de passe invalide.'; 
    } 
     
    ?>
    Encore merci de votre aide! j'en ai appris beaucoup!
    ;-)

    Caroline.

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

Discussions similaires

  1. Demande d'aide pour une requête
    Par arkzor dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/12/2004, 02h40
  2. Création requete besoin d'aide pour une date
    Par royrremi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/07/2004, 22h03
  3. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 11h56
  4. Aide pour une requete ... "COUNT(*)"
    Par mechantebestiole dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/05/2004, 16h27
  5. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 15h38

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