Verification de mot de passe [Résolu]

chasseur2
Messages postés
34
Date d'inscription
vendredi 3 mars 2006
Dernière intervention
10 mai 2009
- 1 mars 2009 à 13:48 - Dernière réponse : chasseur2
Messages postés
34
Date d'inscription
vendredi 3 mars 2006
Dernière intervention
10 mai 2009
- 5 mars 2009 à 11:14
SALUT LES PRO:
 j'ai un problème avec la fonction MD5( ) car lorsque j'ai inscrit et que les données sont enregistrer dans ma base de données le temps ou  je veux comparer avec le mot  de passe stocké dans ma base de données et le mot de passe saisie par l'user je trouve un concordance avec les deux mot de passe pour être claire voila le lien de ma scripte il contient un fichier login.php et enregistrer.php et un fichier pour crée la base de données et un photos montre la concordance entre les deux mots de passe et merci
le lien<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>
Afficher la suite 

Votre réponse

18 réponses

Meilleure réponse
chasseur2
Messages postés
34
Date d'inscription
vendredi 3 mars 2006
Dernière intervention
10 mai 2009
- 2 mars 2009 à 12:57
3
Merci
merci pour votre patience j'ai resulu le probleme et voilà le scripte login.php

<html>
<head><title>Login</title></head>

<?php


  $con = mysql_connect('localhost','root','');
  $db = mysql_select_db('MA_BASE_DE_DONNEES',$con);




  if (!empty($_POST['nom']) and ($_POST['pass1'] )) {
   
   $passs = md5($_POST['pass1']);
   
   $nom = $_POST['nom'];
 
  $pas = substr($passs,-2);
 
  $pas3 = rtrim(md5($_POST[pass1]),$pas);
 
  $qy = "SELECT * FROM user WHERE pseudo LIKE '$nom' OR pass LIKE '$pas3'";
 
  $requete = mysql_query($qy);
 
  $result = mysql_fetch_array($requete);
 
  $passd = $result[pass];
   
      if ($pas3 $passd and  $nom $result[pseudo]) {
   
   
   
   echo "Bienvenue "." ".$_POST['nom']." "." vous étes dejà enregister chez nous";
   
  }
  else {  
   echo $qy ;
      echo "
" ;
   echo "S'il vous plais enregistrer d'abord";
   echo "
" ;
   echo "Enregistrer
"."
";
   echo "Pass de la base de donnée est :". $passd ."
";
   echo "Pass de ma form Login est &nbsp;&nbsp;&nbsp;&nbsp; :". $passs ."
";
   echo "";
   print_r($result);
   echo "

";
   
     
   
   }
  }else{
   
  echo <<<HTML
   

  <form action ="login.php" method= "POST">
    Entrer votre Nom :
    Entrer votre Mot de passe :
  
  
  </form>
 
 

HTML;
  }
 


?>

</html>

aussi j'ai tester votre suggestion coucour747 avec un amelioration il me donne même resultat

<html>
<head><title>Login</title></head>

<?php


  $con = mysql_connect('localhost','root','');
  $db = mysql_select_db('MA_BASE_DE_DONNEES',$con);




  if (!empty($_POST['nom']) and ($_POST['pass1'] )) {
   
   $passs = md5($_POST['pass1']);
   
   $nom = $_POST['nom'];
 
 $pas = substr($passs,-2);
 
 $pas3 = rtrim(md5($_POST[pass1]),$pas);
 
  $qy = "SELECT * FROM user WHERE pseudo LIKE '$nom' AND pass LIKE '$pas3'";
 
  $requete = mysql_query($qy);
   
   if ($result = mysql_fetch_array($requete)) {
   
   
   
   echo "Bienvenue "." ".$_POST['nom']." "." vous étes dejà enregister chez nous";
   
  }
  else {  
   echo $qy ;
      echo "
" ;
   echo "S'il vous plais enregistrer d'abord";
   echo "
" ;
   echo "Enregistrer
"."
";
   echo "Pass de la base de donnée est :". $passd ."
";
   echo "Pass de ma form Login est &nbsp;&nbsp;&nbsp;&nbsp; :". $passs ."
";
   echo "";
   print_r($result);
   echo "

";
   
     
   
   }
  }else{
   
  echo <<<HTML
   

  <form action ="login.php" method="POST">
    Entrer votre Nom :
    Entrer votre Mot de passe :
  
  
  </form>
 
 

HTML;
  }
 


?>

</html>

essai de le tester chez vous peut etre il devien utile pour vous

Merci chasseur2 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de chasseur2
Meilleure réponse
chasseur2
Messages postés
34
Date d'inscription
vendredi 3 mars 2006
Dernière intervention
10 mai 2009
- 4 mars 2009 à 11:27
3
Merci
merci coucou encor une fois pour votre patience et vraiment si je veux une verification exacte je doit utiliser l'operateur = a la palce de LIKE
mais tu sais ou se trouve la source de ce probleme c'est la :

CREATE TABLE `user` (
 `id` int(11) NOT NULL auto_increment,
 `pseudo` varchar(30) collate utf8_unicode_ci NOT NULL,
 `pass` varchar(30) collate utf8_unicode_ci NOT NULL,  // varchar(32)
 `email` varchar(50) collate utf8_unicode_ci NOT NULL,
 `date_enregi` date NOT NULL,
 `photos` varchar(50) collate utf8_unicode_ci NOT NULL,
 PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

parceque moi j'ai mis un champs varchar de 30 carractere et la fonction MD5 nous donne un cryptage de 32 bit c'est pourquoi je trouve toujours un manque de deux chiffre lorsque je compare entre le mot de passe stocké dans la BDD et le mot de passe de ma formule alors c'est inutile d' utiliser le rtrim() et le substr()
je fais des test et sa marche bien

Merci chasseur2 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de chasseur2
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
- 1 mars 2009 à 14:21
0
Merci
salut
like n'est pas une verification d'egalite, remplace like par =.

if ($passs $passd and $nom $result[pseudo]) {

elle sert a quoi cette condition ?

tu l'as deja faite dans la requete SQL...

ensuite, met TOUJOURS une verification d'erreur quand tu fais une requete sql (comme ca tu seras averti si elle plante.)
Commenter la réponse de coucou747
chasseur2
Messages postés
34
Date d'inscription
vendredi 3 mars 2006
Dernière intervention
10 mai 2009
- 1 mars 2009 à 14:39
0
Merci
 


Salut coucou747<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>


merci beaucoup pour votre réponse mais j'ai déjà essais de mettre l'opérateur =  et aucune résultat , et le rôle de condition if ($passs == $passd and  $nom == $result[pseudo]) {  c'est lorsqu la requête $qy trouve une pseudo ou un mot de passe identique  déjà stocké dans ma BDD elle vérifie si le pseudo et le mot de passe sont de la même personne mais la requête juste nous cherche s'il existe un pseudo ou un mot de passe et merci +++<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 11.25pt; HEIGHT: 11.25pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.phpcs.com/imgs2/smile_question.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>
Commenter la réponse de chasseur2
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
- 1 mars 2009 à 14:48
0
Merci
en sql, la comparaison c'est : = et pas ==
Commenter la réponse de coucou747
chasseur2
Messages postés
34
Date d'inscription
vendredi 3 mars 2006
Dernière intervention
10 mai 2009
- 1 mars 2009 à 15:07
0
Merci
Merci coucou747
 mais ou j'ai utiliser la comparaison avec l'opérateur = = dans mysql si tu parle sur la condition <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>




if ($passs $passd and $nom $result[pseudo]) {








je te dis que ça n'appartient pas la requête $qy si tu parle d'autre chose aller montrer le à moi  j'ai le pas vu et merci infiniment
Commenter la réponse de chasseur2
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
- 1 mars 2009 à 15:19
0
Merci
bah ca

if ($passs $passd and $nom $result[pseudo]) {

ca ne sert a rien...

faut faire la verification en SQL
Commenter la réponse de coucou747
chasseur2
Messages postés
34
Date d'inscription
vendredi 3 mars 2006
Dernière intervention
10 mai 2009
- 1 mars 2009 à 15:40
0
Merci
merci coucou747 à nouveau et je te dis que tu ne copmrend pas mon scripte et la comparaisi se fait comme suit si il existe une resultat dans ma BDD equivalane a celui qui transfere par l'user la requete $qy nous la monter et si nous avons fait comme vous dit if ($passs <gras>$passd and $nom $result[pseudo]) {</gras>

cela signifie que nous avons affecter la resultat a la variable $pass et ça ce n'est pas notre but alors
il  nous faut comparer le resultat qui est stocké dans le tableau $result[] avec la varible



$passs = md5($_POST['pass1']);    =
 






$nom = $_POST['nom'];                    = 

et si la condition est reel la condition va  montrer a l'user le




else {


echo $qy ;


echo "
" ;


echo "S'il vous plais enregistrer d'abord";


echo "
" ;


echo "Enregistrer
"."
";


echo "Pass de la base de donnée est :". $passd ."
";


echo "Pass de ma form Login est &nbsp;&nbsp;&nbsp;&nbsp; :". $passs ."
";


echo "";


print_r($result);


echo "

";











}
Commenter la réponse de chasseur2
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
- 1 mars 2009 à 16:09
0
Merci
mais .... je t'ai dit de le faire en SQL pas en php...
en SQL tu fous un LIKE a la place d'un =.

c'est pas toi qui va m'apprendre le php hein...
Commenter la réponse de coucou747
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
- 2 mars 2009 à 16:20
0
Merci
... t'as rien compris

je parlais de ca :




$qy = "SELECT * FROM user WHERE pseudo LIKE '$nom' OR pass LIKE '$pas3'";

que tu dois remplacer par :




$qy "SELECT * FROM user WHERE pseudo '$nom' AND pass = '$pas3'";


ton script ne fonctionne pas si deux personnes ont le meme password.
Commenter la réponse de coucou747
chasseur2
Messages postés
34
Date d'inscription
vendredi 3 mars 2006
Dernière intervention
10 mai 2009
- 3 mars 2009 à 11:50
0
Merci
mais je l'ai tester et ça fonction correctement
 
Commenter la réponse de chasseur2
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
- 3 mars 2009 à 11:56
0
Merci
$qy = "SELECT * FROM user WHERE pseudo LIKE '$nom' OR pass LIKE '$pas3'";

non...
Commenter la réponse de coucou747
chasseur2
Messages postés
34
Date d'inscription
vendredi 3 mars 2006
Dernière intervention
10 mai 2009
- 3 mars 2009 à 12:26
0
Merci
si nous avons mettre l'operateur OR ça donnes le chois entre le pseudo ou le mot de passe alors pour annuler tous ça en impose avec AND de chercher s'il y  qulelqu'un qui possede un pseudo et un mot de passe
Commenter la réponse de chasseur2
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
- 3 mars 2009 à 16:12
0
Merci
ouais mais dans ton code, t'avais mis OR.

et de toute facon, tu devrais virer ton like parce-que la, pseudo et pseud% sont la meme personne.

tu ne veux pas vrifier si pseudo est comme '$pseudo' mais si pseudo est EGAL a $pseudo.

mais bon, je vais arreter d'ecrire ici puisque tu ne lis pas ce que j'ecris...
Commenter la réponse de coucou747
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
- 4 mars 2009 à 13:37
0
Merci
alors ton code pue la merde et peut planter.
Commenter la réponse de coucou747
chasseur2
Messages postés
34
Date d'inscription
vendredi 3 mars 2006
Dernière intervention
10 mai 2009
- 4 mars 2009 à 13:50
0
Merci
comment coucou747
Commenter la réponse de chasseur2
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
- 4 mars 2009 à 14:01
0
Merci
suffit d'avoir deux debuts de md5 identiques pour deux passwords differents et deux logins differents, vu ton OR et ton LIKE, ca va planter.

mais pourquoi tu ne veux pas agrandir ton champ et faire les choses correctement ?
Commenter la réponse de coucou747
chasseur2
Messages postés
34
Date d'inscription
vendredi 3 mars 2006
Dernière intervention
10 mai 2009
- 5 mars 2009 à 11:14
0
Merci
merci coucou747 j'ai dejà rectifier les erreurs et aussi j'ai aggrendi la taille des champs merci
moi lorsque tu me dis que mon scripte il peut plater j'ai refflichi sur l'injection 'or''=' mais chez moi j'ai fais la foction mysql_real_escape_string() et merci beaucoup 
Commenter la réponse de chasseur2

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.