Problème MD5

Problème MD5 - PHP - Programmation

Marsh Posté le 27-04-2005 à 12:04:59    

Bonjour,
 
J'ai un petit problème avec la fonction de cryptage md5, et si quelqu un pourrai m'aider.
 
le site que je veux créer utilise une bdd mysql, et je programme en php.
 
Sur la page d'accueil (authentification) , j' ai un formulaire qui contient login "$_POST['login]" et mot de passe "$_POST['pass]".
 
Le probleme c'est que quand j'utilise la fonction md5() pour crypté le mot de passe du formulaire, pour le comparer avec celui dans la base (qui est aussi crypté par md5()), ma requete:  
 
  SELECT * FROM utilisateurs WHERE login='$login' AND pass='$pass'
   
n'arrive pas à trouver la réponse, pourtant le mot de passe dans la base (crypté)  
et celui récupéré à partir du formulaire (crypté) sont les même, donc je ne vois pas pourquoi?
 
j'ai déjà tester le programme avec un mot de passe en clair (sans utiliser le md5), ça fonctionne bien!
 
Merci d'avance!

Reply

Marsh Posté le 27-04-2005 à 12:04:59   

Reply

Marsh Posté le 27-04-2005 à 12:07:46    

Ta essayé un echo de ton mot de passe crypté pour vérifier qu'il était cohérent avec celui de la BD?

Reply

Marsh Posté le 27-04-2005 à 12:11:12    

Au hasard, ton champ 'pass' fait quelle taille, dans la base?[:petrus75]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 27-04-2005 à 12:14:37    

cesarr89 a écrit :

Ta essayé un echo de ton mot de passe crypté pour vérifier qu'il était cohérent avec celui de la BD?


 
Oui j'ai déjà fait un echo sur le mot de passe du formulaire crypté et c'est bien coherent avec celui de la BD!
 
 

Reply

Marsh Posté le 27-04-2005 à 12:15:50    

C'est chelou là...
Balance ton code pour voir un peu.

Reply

Marsh Posté le 27-04-2005 à 12:16:12    

fais afficher ta requête à l'écran au lieu de l'exécuter, et exécute-la à la main, pour voir.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 27-04-2005 à 12:18:32    

oué aussi, pour en être sur

Reply

Marsh Posté le 27-04-2005 à 12:27:16    

voici mon code, et je remercie de votre aide:
 
<?php include('connexion.php'); ?>
<?php
 
session_start();
 
if (isset($_POST['login'])){  
 $login = $_POST['login'];
 $pass = $_POST['pass'];  
 
mysql_select_db($database_dbprotect, $dbprotect);
$verif_query=sprintf("SELECT * FROM tb_membre WHERE login='%s' AND pass='%s'", addslashes($login), md5($pass));  
$verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
$row_verif = mysql_fetch_assoc($verif);
$utilisateur = mysql_num_rows($verif);
 
 
 if ($utilisateur) {  
     session_register("authentification" );
   
  $_SESSION['login'] = $row_verif['login'];  
  $_SESSION['pass'] = $row_verif['pass'];  
  $_SESSION['nom'] = $row_verif['nom'];  
 
   
  header("Location:accueil.php" );  
}
 else {
  header("Location:index.php?erreur=login" );  
 }
}
 
//  Déconnexion
if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){
$prenom = $_SESSION['nom'];  
session_unset("authentification" );
header("Location:index.php?erreur=delog" );
}
?>
<html>
<head>
<title>Authentification</title>
<style type="text/css">
<!--
.Style2 {color: #0000FF}
.Style5 {color: #FF0000}
.Style6 {font-family: Verdana, Arial, Helvetica, sans-serif}
.Style7 {font-size: 12px}
-->
</style>
</head>
<body>
<form action="" method="post" name="connect" class="Style6">
  <p align="center" class="Style7"><strong>- ACCES MEMBRE - </strong></p>
  <p align="center" class="Style7"><em>Authentification</em></p>
  <p align="center" class="Style7"><strong>
      <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "login" )) { // Affiche l'erreur  ?>
      <span class="Style5">Echec d'authentification !!! &gt; login ou mot de passe incorrect</span>      <?php } ?>
      <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog" )) { // Affiche l'erreur ?>
      <span class="Style2">D&eacute;connexion r&eacute;ussie... A bient&ocirc;t !</span>      <?php } ?>
      <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru" )) { // Affiche l'erreur ?>
      <span class="Style5">Echec d'authentification !!! &gt; Aucune session n'est ouverte</span>
      <span class="Style5">ou vous n'avez pas les droits pour afficher cette page </span>
      <?php } ?>
  </strong><em>  </em></p>
  <div align="center" class="Style7">  
    <table width="300" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td><table width="294"  border="0" cellpadding="10" cellspacing="0" bgcolor="#eeeeee">
          <tr>
            <td width="50%"><span class="Style7">LOGIN</span></td>
            <td width="50%"><div align="center">
              <input name="login" type="text" id="login">
            </div></td>
          </tr>
          <tr>
            <td width="50%"><span class="Style7">MOT DE PASSE </span></td>
            <td width="50%"><div align="center">
              <input name="pass" type="password" id="pass">
            </div></td>
          </tr>
          <tr>
            <td height="34" colspan="2"><div align="center">
                <input type="submit" name="Submit" value="Se connecter">
            </div></td>
          </tr>
        </table></td>
      </tr>
    </table>  
  <p align="center"><a href="contruction.php"><strong>S'inscrire</strong></a></p>
  </div>
</form>
</body>
</html>
 

Reply

Marsh Posté le 27-04-2005 à 12:32:06    

ouarf......tu peux mettre la balise [C.O.D.E] pour afficher le code stp, parce que la c'est pas très lisible...

Reply

Marsh Posté le 27-04-2005 à 12:37:40    

cesarr89 a écrit :

ouarf......tu peux mettre la balise [C.O.D.E] pour afficher le code stp, parce que la c'est pas très lisible...


 
<?php require_once('connexion.php'); ?>
<?php
 
session_start();
 
if (isset($_POST['login'])){  
 $login = $_POST['login'];
 $pass = $_POST['pass'];  
 
mysql_select_db($database_dbprotect, $dbprotect);
$verif_query=sprintf("SELECT * FROM tb_membre WHERE login='%s' AND pass='%s'", addslashes($login), md5($pass));  
$verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
$row_verif = mysql_fetch_assoc($verif);
$utilisateur = mysql_num_rows($verif);
 
 
 if ($utilisateur) {  
     session_register("authentification" );
   
  $_SESSION['login'] = $row_verif['login'];  
  $_SESSION['pass'] = $row_verif['pass'];  
  $_SESSION['nom'] = $row_verif['nom'];  
 
   
  header("Location:accueil.php" );  
}
 else {
  header("Location:index.php?erreur=login" );  
 }
}
 
//  Déconnexion
if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){
$prenom = $_SESSION['nom'];  
session_unset("authentification" );
header("Location:index.php?erreur=delog" );
}
?>

<html>
<head>
<title>Authentification</title>
</style>
</head>
<body>
<form action="" method="post" name="connect" class="Style6">
  <p align="center" class="Style7"><strong>- ACCES MEMBRE - </strong></p>
  <p align="center" class="Style7"><em>Authentification</em></p>
  <p align="center" class="Style7"><strong>
      <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "login" )) { // Affiche l'erreur  ?>
      <span class="Style5">Echec d'authentification !!! &gt; login ou mot de passe incorrect</span>      <?php } ?>
      <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog" )) { // Affiche l'erreur ?>
      <span class="Style2">D&eacute;connexion r&eacute;ussie... A bient&ocirc;t !</span>      <?php } ?>
      <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru" )) { // Affiche l'erreur ?>
      <span class="Style5">Echec d'authentification !!! &gt; Aucune session n'est ouverte</span>
      <span class="Style5">ou vous n'avez pas les droits pour afficher cette page </span>
      <?php } ?>

  </strong><em>  </em></p>
  <div align="center" class="Style7">  
    <table>
      <tr>
        <td><table>
          <tr>
            <td width="50%"><span >LOGIN</span></td>
            <td width="50%"><div align="center">
              <input name="login" type="text" id="login">
            </div></td>
          </tr>
          <tr>
            <td width="50%"><span class="Style7">MOT DE PASSE </span></td>
            <td width="50%"><div align="center">
              <input name="pass" type="password" id="pass">
            </div></td>
          </tr>
          <tr>
            <td height="34" colspan="2"><div align="center">
                <input type="submit" name="Submit" value="Se connecter">
            </div></td>
          </tr>
        </table></td>
      </tr>
    </table>  
  </div>
</form>
</body>
</html>

Reply

Marsh Posté le 27-04-2005 à 12:37:40   

Reply

Marsh Posté le 27-04-2005 à 12:39:08    

quand je disais [C.O.D.E] c'etait [cpp][/cpp]

Reply

Marsh Posté le 27-04-2005 à 12:39:12    

skeye a écrit :

Au hasard, ton champ 'pass' fait quelle taille, dans la base?[:petrus75]


 
+1  [:aloy]  
des fois qu'il soit tronqué a cause du varchar trop petit pour lequel il aurait pu opter dans sa base.

Reply

Marsh Posté le 27-04-2005 à 12:40:27    

Fait un echo de $verif_query et execute le resultat du echo pour voir ce que ca retourne

Reply

Marsh Posté le 27-04-2005 à 14:14:02    

pmusa a écrit :

+1  [:aloy]  
des fois qu'il soit tronqué a cause du varchar trop petit pour lequel il aurait pu opter dans sa base.


 
Mon champs "pass" est un varchar(20), alors que md5() retourne un nombre de 32 caracteres (hexa)
Est ce que ca pourrait etre ça!
 

Reply

Marsh Posté le 27-04-2005 à 14:14:43    

rado_rmh a écrit :

Mon champs "pass" est un varchar(20), alors que md5() retourne un nombre de 32 caracteres (hexa)
Est ce que ca pourrait etre ça!


ah ben oui ya des chances hein...[:moule_bite]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 27-04-2005 à 14:15:28    

oui effectivement.....

Reply

Marsh Posté le 27-04-2005 à 14:19:24    

rado_rmh a écrit :

Mon champs "pass" est un varchar(20), alors que md5() retourne un nombre de 32 caracteres (hexa)
Est ce que ca pourrait etre ça!


md5 renvoi toujours 32 caractere... donc dans ta base de donnée, faut pas un varchar(20) mais un char(32)


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 27-04-2005 à 14:27:48    

Yes! maintenant, ça marche!
 
En fait, c'etait bien le problème de taille de mon champs "pass".
 
Merci à tous (cesarr89, skeye)  et bonne continuation!

Reply

Marsh Posté le 27-04-2005 à 14:29:14    

de rien et hésite pas à revenir en cas de problème

Reply

Marsh Posté le 27-04-2005 à 14:41:57    

mais bordel MD5 c'est pas du cryptage mais du hachage


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 27-04-2005 à 14:43:08    

jagstang a écrit :

mais bordel MD5 c'est pas du cryptage mais du hachage


Oui, mais ce n'est pas le sujet.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 27-04-2005 à 14:45:26    

skeye a écrit :

Oui, mais ce n'est pas le sujet.:o


de plus, ce même problème avait déjà été résolu... merci d'utiliser la recherche...
 
http://forum.hardware.fr/forum2.ph [...] ash_post=0
 
edit : enfin, pas tout à fait le même, là il avait mis en varchar(15) et pas 20 :o


Message édité par jagstang le 27-04-2005 à 14:45:50

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 27-04-2005 à 14:47:06    

jagstang a écrit :

de plus, ce même problème avait déjà été résolu... merci d'utiliser la recherche...
 
http://forum.hardware.fr/forum2.ph [...] ash_post=0
 
edit : enfin, pas tout à fait le même, là il avait mis en varchar(15) et pas 20 :o


Euh oui, mais le titre avait rien à voir et était mal écrit. Donc taggle.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 27-04-2005 à 14:49:23    

j'ai juste fait une recherche MD5 dans prog (titre)
 
c'est le 7ème qui sort. alors taggle toi-même  [:loom the gloom]  [:tartalap]


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed