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 :

[Sécurité] Problème d'authentification avec la fonction "md5"


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Points : 18
    Points
    18
    Par défaut [Sécurité] Problème d'authentification avec la fonction "md5"
    bonjour à tous!
    débutant en php j'ai écrit un code sur l'autehentification des utilisateurs avec la fonction md5() voir si-dessous. le problème c'est qu'il ne reconnait pas le mot de passe il m'affiche le message du else"mauvais mot de passe" pourtant j'utilise la même variable ($motpasse=md5($_POST['motpasse']) l'enregistrement aider moi à trouver l'erreur


    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
    <?php
    session_start();
    require("definitions.php");
    $connect=mysql_connect(SERVEUR, NOM, PASS)
     or die('Connexion impossible : ' . mysql_error());
    $query=mysql_query("USE ".BASE);
     
    function verification($pseudo,$password)
    {
      $pseudo_sql = mysql_real_escape_string($pseudo);
      $password_sql = mysql_real_escape_string($motpasse);
      $sql ="select * from users where user_name ='$pseudo_sql'
             and password = '$password_sql'";
      $result = mysql_query($sql) or die ('requete non executée : '.mysql_error());
      if(mysql_num_rows($result)>0)
      {return TRUE;
      }
      else
      {
      return FALSE;
      }
    }
     
    $pseudo = $_POST['pseudo'];
    $motpasse=md5($_POST['motpasse']);
    //$motpasse_cripter=['motpasse'];
    //$motpasse = $_POST['motpasse'];
     
     if(isset($_POST['pseudo']) && isset($_POST['motpasse']))
     {
       if(verification($pseudo,$motpasse))
       {
         $_SESSION['pseudo'] = $pseudo;
         $message =' vous êtes coreectement identifié';
         include "portail.php";
       }
       else{
       $message = 'mauvais mot de passe';
       echo $message;
       }
      }
    ?>
    merci d'avance

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut, fait un echo $sql pour voir ta requête,
    bye

    (et si t'as les magic quote activés il faudra que tu fasses un stripslashes avant ton escape_string())
    Vive les roues en pierre

  3. #3
    Membre actif Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Points : 296
    Points
    296
    Par défaut
    que ce passe-t-il si ta fonction vérification est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function verification($pseudo,$password)
    {
      $pseudo_sql = mysql_real_escape_string($pseudo);
      $password_sql = mysql_real_escape_string($motpasse);
      $sql ="select * from users where user_name ='$pseudo_sql'";
      $result = mysql_query($sql) or die ('requete non executée : '.mysql_error());
      if(mysql_num_rows($result)>0)
      {return TRUE;
      }
      else
      {
      return FALSE;
      }
    }
    j'ai enlevé une parti de la requête

    et tu dis que pour l'ajout tu fais le md5 mais tu fais aussi le
    mysql_real_escape_string sue le mot de passe en md5 (je ne sais pas si ça a de l'importance mais bon faut toujours essayer)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut
    fait un echo mysql_real_escape_string($pseudo);
    et vérifie si dans la base tu à la même chose?

    le md5 c'est uniquement des caractères de 0 à f
    donc je pense que c'est surtout le pseudo qui ne passe pas (car lui il peut contenir des ' ou des ")

Discussions similaires

  1. [Sécurité] Problème de sessions avec IE6
    Par TheMoutch dans le forum Langage
    Réponses: 8
    Dernier message: 21/08/2006, 17h52
  2. Réponses: 1
    Dernier message: 03/11/2005, 18h44
  3. Problème de titre avec la fonction window.open
    Par kloss dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/04/2005, 18h34

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