comparaison mot de passe bd et formulaire

comparaison mot de passe bd et formulaire - PHP - Programmation

Marsh Posté le 25-11-2009 à 23:51:16    

Bonjour, j'ai un problème qui se présente lors de la mise en ligne de mon site, en local il fonctionne très bien.
Dans ma base de donnée j'ai une table configuration avec 2 champ : Login_admin (clé primaire) et Password_admin qui est crypté en md5 déclaré en var (32).
Dans mon fichier Log.php, je compare le mot de passe de la bd avec celui entré dand le formulaire, je crois que c'est la le problème mais n'en suis pas sure.
Quelqu'un pourra peut etre m'aider, car je n'avance plus et comprend de moins en moins mes erreurs.
 
Lorsque j'essaie de me connecter à la partie admin de mon site :
 
la variable Sql retourne : SELECT Login_admin, Password_admin FROM configuration WHERE Login_admin='admin' AND Password_admin=password('admin')
la variable Sql retourne : Resource id #2
erreur sur variable n
 
mon code Log.php
<?
session_start () ;
 
$db = mysql_connect ("sql.free.fr", "*****", "*****" ) ;
mysql_select_db ("*****" ) ;
 
switch ($_GET['action'])
{
case'Log_in':
 //si on entre que l'identifiant sans mot de passe
 if (empty ($_POST['Form_login']))
 {
  header ("Location: index.php?etat=1" ) ;
 }
 //si on entre que le mot de passe sans l'identifiant
 elseif (empty ($_POST['Form_password']))
 {
  header ("Location: index.php?etat=2" ) ;
 }
 else
 //si on entre l'identifiant et le mot de passe
 {
  $Sql = "SELECT Login_admin, Password_admin FROM configuration WHERE Login_admin='".$_POST['Form_login']."' AND Password_admin=password('".$_POST['Form_password']."')";
echo "la variable Sql retourne : $Sql<br>";
   
  $Req = mysql_query ($Sql) or die ("erreur sur $Req" );
echo "la variable Sql retourne : $Req<br>";
   
  $n = mysql_num_rows ($Req) or die ("erreur sur variable n" );
echo "<variable n retourne : $n lignes";
   
  if ($n != 0)
  {
   session_register ("Admin" );
   header ("Location: index.php" );
  }
  else
  {
   header ("Location: index.php?etat=3" ) ;
  }
 }
break ;
 
case'Log_out':
 
 session_unregister ("Admin" ) ;
 header ("Location: index.php" ) ;
 
break ;
 
case'Change':
 if (empty ($_POST['Form_login']))
 {
  header ("Location: index.php?page=Change_pass&etat=1" ) ;
 }
 elseif (empty ($_POST['Form_password']))
 {
  header ("Location: index.php?page=Change_pass&etat=2" ) ;
 }
 elseif (empty ($_POST['Form_password_2']))
 {
  header ("Location: index.php?page=Change_pass&etat=3" ) ;
 }
 elseif ($_POST['Form_password'] != $_POST['Form_password_2'])
 {
  header ("Location: index.php?page=Change_pass&etat=4" ) ;
 }
 else
 {
  $Sql = "UPDATE `configuration` SET `Login_admin` = '".$_POST['Form_login']."', `Password_admin` = PASSWORD( '".$_POST['Form_password']."' )" ;
  $Req = mysql_query ($Sql) ;
  header ("Location: index.php?page=Change_pass&etat=5" ) ;
 
 }
 
break ;
 
}
?>


Message édité par Gaoula73 le 26-11-2009 à 10:52:28
Reply

Marsh Posté le 25-11-2009 à 23:51:16   

Reply

Marsh Posté le 26-11-2009 à 01:39:05    

Vire ASAP ton login et mdp free avant que quelqu'un usurpe ton compte [:kluruit]

Reply

Marsh Posté le 26-11-2009 à 12:27:52    

1. Utilise les balises code (bouton http://forum-images.hardware.fr/icones/message/c.gif ou balise [ code=php ]). Ca améliorera nettement la lisibilité...
 
2.

Code :
  1. $Req = mysql_query ($Sql) or die ("erreur sur $Req" );
  2. echo "la variable Sql retourne : $Req<br>";


Comme mysql_query renvoie une ressource, un echo dessus est inutile  :o  
 
3.

Code :
  1. SELECT Login_admin, Password_admin FROM configuration WHERE Login_admin='admin' AND Password_admin=password('admin')


C'est quoi cette fonction password('admin') ?
 
Tu as essayé ta requête en direct (phpMyAdmin) ?
 
[Edit]Fautes de frappe  :o


Message édité par macgawel le 26-11-2009 à 12:28:53
Reply

Marsh Posté le 26-11-2009 à 13:08:38    

En effet, la fonction PASSWORD ne doit pas être adapté car tu dis que tes mots de passe sont stockés en MD5, alors que la fonction PASSWORD ne retourne pas du tout le md5 de la chaîne passée en paramètres.
 
Par contre, il existe sous mysql une fonction MD5 :)

Reply

Sujets relatifs:

Leave a Replay

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