probleme avec md5 et ma session [RESOLU]

probleme avec md5 et ma session [RESOLU] - PHP - Programmation

Marsh Posté le 29-09-2004 à 05:34:49    

voilà là il y a un truc que je comprends pas
si je n'utilise pas md5, au moment de l'identification il trouve le mot de passe sans problème
si j'utilise md5 là non:
 
 pour l'insertion là aucun probleme je retrouve dans ma table le pass en crypté

Code :
  1. $motCrypte = md5 ($_POST['mdp']);
  2. INSERT INTO contact (mdp) VALUES ('$motCrypte')";

 
Pour la recherche pour une ouverture de session...
le nom de mon champs text est mdp. En gros $contact est un objet contenant les infos du contacts provenant de ma table apres une requete sur l'identifiant, et mdp qu'il appelle est son mot de passe crypté qu'il compare au mot de passe que le visiteur vient de saisir pour s'identifier.

Code :
  1. if ($contact->mdp == md5($mdp))

 
et donc là quand je veux m'identifier j'ai toujours mot de passe incorrect.
Je sais pas si je suis cair ???


Message édité par Scarf3ss3 le 29-09-2004 à 17:31:09
Reply

Marsh Posté le 29-09-2004 à 05:34:49   

Reply

Marsh Posté le 29-09-2004 à 08:15:32    

la ligne de comparaison est celle de ton code ou tu à recopié ???  
paske il te manque "$" pour lui dire que $mdp est une variable

Code :
  1. if ($contact->mdp == md5($mdp))


 
si c'est la meme ligne que dans ton script, le pb doit venir de là ;)

Reply

Marsh Posté le 29-09-2004 à 12:35:16    

Code :
  1. $sql_connect = mysql_connect( "$sqlhost" , "$sqluser" , "$sqlpass" );
  2. mysql_select_db( "$sqldb", $sql_connect );
  3. $requete = ( 'SELECT mdp FROM base WHERE user="' . $_POST['user'] . '"' ) ;
  4. $query = mysql_query($requete);
  5. $fetch = mysql_fetch_array($query);
  6. mysql_close();
  7. $mdpdb = $fetch['mdp'];
  8. $mdppost = md5($_POST['mdp']);
  9. if ( $mdpdb == $mdppost )
  10. {
  11. echo "success !";
  12. }
  13. elseif ( $mdpdb != $mdppost )
  14. {
  15. echo "login ou mot de pass invalide";
  16. }


Message édité par Masenko le 29-09-2004 à 15:40:18
Reply

Marsh Posté le 29-09-2004 à 15:22:06    

Xav_ a écrit :

la ligne de comparaison est celle de ton code ou tu à recopié ???  
paske il te manque "$" pour lui dire que $mdp est une variable

Code :
  1. if ($contact->mdp == md5($mdp))


 
si c'est la meme ligne que dans ton script, le pb doit venir de là ;)


ba non

Code :
  1. $contact->mdp;

mdp est un attribut pas une variable  
edit : pardon j'avais pas vu que j'avais oublie le $ dans == md5(mdp) j'edit


Message édité par Scarf3ss3 le 29-09-2004 à 15:57:44
Reply

Marsh Posté le 29-09-2004 à 15:22:54    

masenko a écrit :

Code :
  1. $mdpdb = $fetch['mdp'];
  2. $mdppost = md5($_POST['mdp']);
  3. if ( $mdp == $mdppost )
  4. {
  5. echo "success !";
  6. }
  7. elseif ( $mdp != $mdppost )
  8. {
  9. echo "login ou mot de pass invalide";
  10. }


 
 
Comme ça ça devrait fonctionner en imaginant que pour la variable $mdpdb tu as fais un mysql_fetch_array WHERE user=".$_POST['user']."


marche po, je ne comprends pas là, je suis perdu  :cry:

Reply

Marsh Posté le 29-09-2004 à 15:30:42    

normal j'ai fais une petite faute regarde le poste j'ai edité ça devrait être bon

Reply

Marsh Posté le 29-09-2004 à 15:35:53    

scarf3ss3 a écrit :

ba non "$contact->mdp"; "mdp" est un attribut pas une variable

Houla, met des guillemets autour de mdp, parce que ça prête à confusion !

Reply

Marsh Posté le 29-09-2004 à 15:37:18    

kalex a écrit :

Houla, met des guillemets autour de mdp, parce que ça prête à confusion !


oui pardon effectivement  ;)

Reply

Marsh Posté le 29-09-2004 à 15:37:30    

masenko a écrit :

Code :
  1. $sql_connect = mysql_connect( "$sqlhost" , "$sqluser" , "$sqlpass" );
  2. mysql_select_db( "$sqldb", $sql_connect );
  3. $requete = ( 'SELECT mdp FROM base WHERE user="' . $_POST['user'] . '"' ) ;
  4. $query = mysql_query($requete);
  5. $fetch = mysql_fetch_array($query);
  6. mysql_close();
  7. $mdpdb = $fetch['mdp'];
  8. $mdppost = md5($_POST['mdp']);
  9. if ( $mdpdb == $mdppost )
  10. {
  11. echo "success !";
  12. }
  13. elseif ( $mdpdb != $mdppost )
  14. {
  15. echo "login ou mot de pass invalide";
  16. }



 
Je m'auto cite donc comme ça c'est bon voilà bonne chance pour la suite


Message édité par Masenko le 29-09-2004 à 15:39:41
Reply

Marsh Posté le 29-09-2004 à 15:55:46    

masenko a écrit :

Je m'auto cite donc comme ça c'est bon voilà bonne chance pour la suite


merci masenko mais malheureusement tu m'as pas laissé le temps de te repondre.
j'avais corrigé ton petit oubli mais ça ne marchait pas quand même.
J'utilise la même structure sous forme d'appel de fonction mais c'est exactement la même.
Le probleme est bizarre puisque que je rappel que si je rentre un pass sans le haché en md5 et que je le compare avec :

Code :
  1. if ($contact->mdp == $mdp)

 
ça marche !
alors que  

Code :
  1. if ($contact->mdp == md5($mdp))

ne marche pas dans le cas d'un pass haché en md5 !!!!
c'est imcomprehensible !
aidé moi, est ce que ça peut venir d'easyphp ? j'ai la dernière version 1.7


Message édité par Scarf3ss3 le 29-09-2004 à 15:58:41
Reply

Marsh Posté le 29-09-2004 à 15:55:46   

Reply

Marsh Posté le 29-09-2004 à 15:59:25    

Tu as vérifié à l'oeil si les résultats sont les mêmes ?
Genre :

Code :
  1. echo $contact->mdp.'<br />'.md5($mdp);

Reply

Marsh Posté le 29-09-2004 à 16:01:46    

Je pense pas que ça viennt de easyphp mais si y a quelques chose que je te conseil c'est bien d'installer apache2 php5 ou 4 et mysql manuelement.
 
Sinon tu peux filer ton code un peu plus complet ?

Reply

Marsh Posté le 29-09-2004 à 16:06:50    

kalex a écrit :

Tu as vérifié à l'oeil si les résultats sont les mêmes ?
Genre :

Code :
  1. echo $contact->mdp.'<br />'.md5($mdp);




putain je t'aime !!!!  :love: j'avais pas pensé à faire ça....
et effectivement le probleme vient de là il manque les 2 derniers caracteres pour md5($mdp) :
 
2c020a36498c6e57e21cfdc06df190
2c020a36498c6e57e21cfdc06df19061
 
ce qui correspond au champs password. par contre je comprends pas puisque en taille limite j'ai mis 30 et dans ma base le pass est stoché dans un VARCHAR (30) alors pourquoi il la variable $mdp ne veut pas des 2 derniers caracteres ?
 
sinon un grand merci !

Reply

Marsh Posté le 29-09-2004 à 16:08:25    

scarf3ss3 a écrit :

putain je t'aime !!!!  :love: j'avais pas pensé à faire ça....
et effectivement le probleme vient de là il manque les 2 derniers caracteres pour md5($mdp) :
 
2c020a36498c6e57e21cfdc06df190
2c020a36498c6e57e21cfdc06df19061
 
ce qui correspond au champs password. par contre je comprends pas puisque en taille limite j'ai mis 30 et dans ma base le pass est stoché dans un VARCHAR (30) alors pourquoi il la variable $mdp ne veut pas des 2 derniers caracteres ?
 
sinon un grand merci !


pardon je me suis planté c'est le champs de ma base qui n'accepte pas mes 2 derniers caracteres  :pt1cable:

Reply

Marsh Posté le 29-09-2004 à 16:14:59    

Merci kalex !
 
bon ça marche ! et effectivement j'étais vraiment trop con !!!
il suffisait donc de mettre un VARCHAR (60) pour ma table où il y a le mdp car un VARCHAR (30) n'etais pas assez long. J'ai honte de moi, je m'autoflagelle.
 
Merci encore  :hello:
 
 
edit : au fait vous pensez que (60) suffit ??? car les visiteurs peuvent saisir un pass jusqu'à 30 caractères


Message édité par Scarf3ss3 le 29-09-2004 à 16:16:19
Reply

Marsh Posté le 29-09-2004 à 16:17:30    

c'était pas grand-chose. :o

Reply

Marsh Posté le 29-09-2004 à 16:18:29    

scarf3ss3 a écrit :

Merci kalex !
 
bon ça marche ! et effectivement j'étais vraiment trop con !!!
il suffisait donc de mettre un VARCHAR (60) pour ma table où il y a le mdp car un VARCHAR (30) n'etais pas assez long. J'ai honte de moi, je m'autoflagelle.
 
Merci encore  :hello:
 
 
edit : au fait vous pensez que (60) suffit ??? car les visiteurs peuvent saisir un pass jusqu'à 30 caractères


 
32 suffit dans TOUS les cas. pour un mot de passe de 1 ou de 1000 caractères


Message édité par jagstang le 29-09-2004 à 16:18:45

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

Marsh Posté le 29-09-2004 à 16:19:54    

Et même pour un fichier de plusieurs Go. ;)

Reply

Marsh Posté le 29-09-2004 à 16:21:10    

suffit de savoir la définition d'un hachage


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

Marsh Posté le 29-09-2004 à 16:21:41    

et pourquoi un varchar pour un password ??

Reply

Marsh Posté le 29-09-2004 à 16:29:26    

KangOl a écrit :

et pourquoi un varchar pour un password ??


pourquoi tu aurais mis quoi ?

Reply

Marsh Posté le 29-09-2004 à 16:29:34    

KangOl a écrit :

et pourquoi un varchar pour un password ??


Sans doute parce qu'à la base il n'a pas pensé au hashing.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 29-09-2004 à 16:30:27    

Moi aussi j'utilise un varchar(32) c'est très bien un varchar...

Reply

Marsh Posté le 29-09-2004 à 16:31:02    

sircam a écrit :

Sans doute parce qu'à la base il n'a pas pensé au hashing.


c'est quoi le mieu pour du hashing ? blob ?

Reply

Marsh Posté le 29-09-2004 à 16:45:58    

scarf3ss3 a écrit :

c'est quoi le mieu pour du hashing ? blob ?


[:alph-one]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 29-09-2004 à 16:49:37    

masenko a écrit :

Moi aussi j'utilise un varchar(32) c'est très bien un varchar...

CHAR(32), pour un résultat qui fait toujours 32 caractères, c'est bien mieux.
 
Explications :
http://dev.mysql.com/doc/mysql/fr/CHAR.html

Reply

Marsh Posté le 29-09-2004 à 16:50:02    

char [:jagstang]
 
 
[:benou_grilled]


Message édité par jagstang le 29-09-2004 à 16:50:25

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

Marsh Posté le 29-09-2004 à 16:50:53    

scarf3ss3 a écrit :

c'est quoi le mieu pour du hashing ? blob ?


tu sors ça au hasard ?


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

Marsh Posté le 29-09-2004 à 16:51:23    

bha oui, un password ne change que tres rarement...

Reply

Marsh Posté le 29-09-2004 à 16:52:06    

oui mais sa longueur ne changera JAMAIS


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

Marsh Posté le 29-09-2004 à 16:53:12    

JagStang a écrit :

tu sors ça au hasard ?


oui [:amandine75011]
 
 
 
 
 
 
 
 
[:anauff]

Reply

Marsh Posté le 29-09-2004 à 16:59:04    

Dans la série 'je ne comprends pas vraiment ce que je fais mais je bidouille', le BLOB pour un champs de longueur fixe 32.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 29-09-2004 à 17:01:47    

sircam a écrit :

Dans la série 'je ne comprends pas vraiment ce que je fais mais je bidouille', le BLOB pour un champs de longueur fixe 32.


si je sais que blob c'est pour stockés des bits donc des fichiers  :o

Reply

Marsh Posté le 29-09-2004 à 17:10:07    

scarf3ss3 a écrit :

si je sais que blob c'est pour stockés des bits donc des fichiers  :o


stocker  [:moundir]  
 
Donc ne réponds pas n'importe quoi, petit comique.  [:crosscrusher]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 29-09-2004 à 17:13:53    

Tiens c'est une idée ça, un mot de passe sous forme de fichier (une image par exemple). Cool, comme dans James Bond ! [:sb62]

Reply

Marsh Posté le 29-09-2004 à 17:21:33    

kalex a écrit :

Tiens c'est une idée ça, un mot de passe sous forme de fichier (une image par exemple). Cool, comme dans James Bond ! [:sb62]


Je sais pas si tu plaisantes mais c'est possible !  

Reply

Marsh Posté le 29-09-2004 à 17:23:42    

Bien sur. Mais y a rien de plus con pour un site Web. :o

Reply

Marsh Posté le 29-09-2004 à 17:53:38    

kalex a écrit :

Bien sur. Mais y a rien de plus con pour un site Web. :o


si ça ferai classe  :sol:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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