Besoin d expert en php

Bonjour,

voici un code pour changer un mot de passe mai le probleme ce que ce ne fonctionne pas il m'indique mon message d erreur veuillez avoir l'obligeance de recommencer mais ce message s'affiche qunad $mot_passe && $mot_de_passe && $nom_d_utilisateur ne sont pas bien rempli donc voici mon code merci de bien vouloir m aider

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
<link href="mysql_connect_enregritrement.css" rel="stylesheet" type="text/css" />
<link href="styles-enregistrer.css" rel="stylesheet" type="text/css" />
</head>

<body>
<?php
//définir le titre de la page et metre le menu
$titre_page = "changer mot de passe";
include ('menu.php');

if(isset($_POST['submit']))
{//traiter le formulaire

function echappement ($data)
{ global $bd;//connexion nécessaire
if(ini_get('magic_quotes_gpc'))
{ $data = stripslashes($data);
}
return mysql_escape_string($data);
}//fin de la fonction

mysql_connect("localhost", "root", "");
mysql_select_db("ma base");

$message = NULL;

//vérifier l'exitence du username
if (empty($_POST['nom_d_utilisateur']))
{ $nom_d_utilisateur = FALSE;
$message .= '<p>Vous avez oublié d\'indiquer votre nom_d_utilisateur</p>';
}
else
{ $nom_d_utilisateur = echappement($_POST['nom_d_utilisateur']);
}

//vérifier l'exitence du username
if (empty($_POST['mot_passe']))
{ $mot_passe = FALSE;
$message .= '<p>Vous avez oublié d\'indiquer votre mot de passe</p>';
}
else
{ $nom_d_utilisateur = echappement($_POST['mot_passe']);
}

//véréfier l' existence d'un mot de passe
if(empty($_POST['mot_de_passe1']))
{ $mot_de_passe = FALSE;
$message .= '<p>Vous avez oublié d\'indiquer votre nouveau mot de passe </p>';
}
else
{if ($_POST['mot_de_passe1'] == $_POST['mot_de_passe2'])
{ $mot_de_passe = echappement($_POST['mot_de_passe1']);
}
else
{ $mot_de_passe= FALSE;
$message .= '<p>Votre mot de passe est différent de celui que vous avez précédement déclaré</p>';
}
}

if ( $mot_passe && $mot_de_passe && $nom_d_utilisateur)
{

$nom_d_utilisateur = mysql_real_escape_string(htmlspecialchars($_POST['nom_d_utilisateur']));
$mot_passe = mysql_real_escape_string(htmlspecialchars($_POST['mot_passe']));
$mot_de_passe = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe']));

$rq = "SELECT id_utilisateur FROM utilisateur
WHERE (nom_d_utilisateur= $nom_d_utlisateur AND mot_de_passe=PASSWORD ('mot_passe'))";
$result = mysql_query($rq);
$nb = mysql_num_rows($result);
if($nb ==1)
{ $ligne = mysql_fetch_array($result, MYSQL_NUM);
//créer la requete
$rq = "UPDATE utilisateur SET mot_de_passe=PASSWORD('$mot_passe')
WHERE id_utilisateur=$ligne[0]";
$result= mysql_query($rq);
if (mysql_affected_rows()==1)//si c'est ok
{
include('menu.php');
//envoyer éventuellement un e-mail
?>
<div id="merci">
<p><b>Merci de vous vous être enregistré sur notre site.</b></p>
</div>
<?php
include('pied.php');

exit();
}
else
{echo"<p>Votre mot de passe n'apas pu être modifié.".
"<p></p>" . mysql_error() ."<p></p>";
}
}
else
{ $message .= "<pVotre nom d'utilisateur et votre mot de passe ne correspondent pas à un utilisateur enregistré.</p>";
}
mysql_close();
}
else
{ //Quelque chose n'est pas correct

$message .= "<p>Veuillez avoir l'obligeance de recommencer</p>";
}

}

if(isset($message))
{ echo "<font color='red'>$message</font>";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>"method="post">
<fieldset>
<legend>Veuillez remplir le formulaire ci-joint:</legend>

<div id="username">
<p><b>nom d'utilisateur :</b>
<input type="text" name="nom_d_utilisateur"
size="20" maxlength="40"
value="<?php if (isset($_POST['nom_d_utilisateur']))
echo $_POST['nom_d_utilisateur'];?>"/>
</p>
</div>

<div id="email">
<p><b>Mot de passe actuel :</b>
<input type="password" name="mot_passe"
size="20" maxlength="40"
value="<?php if (isset($_POST['mot_passe']))
echo $_POST['mot_passe'];?>"/>
</p>
</div>

<div id="mot_passe_1">
<p><b>Votre nouveau mot de passe :</b>
<input type="password" name="mot_de_passe1"
size="20" maxlength="40"
value="<?php if (isset($_POST['mot_de_passe1']))
echo $_POST['mot_de_passe1'];?>" />
</p>
</div>

<div id="mot_de_passe2">
<p><b>Confirnmez votre neauvou mot de passe :</b>
<input type="password" name="mot_de_passe2"
size="20" maxlength="40"
value="<?php if (isset($_POST['mot_de_passe2']))
echo $_POST['mot_de_passe2'];?>"/>
</p>
</div>

</fieldset>
<div id="button">
<input type="submit" name="submit"
value="S'inscire"/>
</div>
</div>

</form><!-- fin du formulaire-->

<?php
//fin du l'instruction conditionnelle principale
include('pied.php');
?>

</body>
</html>
Configuration: Windows Vista
Firefox 3.0.3

2 réponses

  1. Salut,

    si tu testes des variables à true il faut au moins les initialiser à cette valeur par défaut, elles deviendront false si erreur seulement donc:

    <body>
    <?php
    //définir le titre de la page et metre le menu
    $titre_page = "changer mot de passe";
    include ('menu.php');
    //init des variables
    $mot_passe=true;
    $mot_de_passe=true;
    $nom_d_utilisateur=true;
      ......
    
    1
    1. dsl cela ne fontionne pas .... et revoici mon code

      !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Document sans titre</title>
      <link href="mysql_connect_enregritrement.css" rel="stylesheet" type="text/css" />
      <link href="styles-enregistrer.css" rel="stylesheet" type="text/css" />
      </head>

      <body>
      <?php
      //définir le titre de la page et metre le menu
      $titre_page = "changer mot de passe";
      include ('menu.php');
      //init des valeurs par défaut:
      $mot_passe =true;
      $mot_de_passe =true;
      $nom_d_utilisateur =true;

      if(isset($_POST['submit']))
      {//traiter le formulaire

      function echappement ($data)
      { global $bd;//connexion nécessaire
      if(ini_get('magic_quotes_gpc'))
      { $data = stripslashes($data);
      }
      return mysql_escape_string($data);
      }//fin de la fonction

      mysql_connect("localhost", "root", "");
      mysql_select_db("ma base");

      $message = NULL;

      //vérifier l'exitence du username
      if (empty($_POST['nom_d_utilisateur']))
      { $nom_d_utilisateur = FALSE;
      $message .= '<p>Vous avez oublié d\'indiquer votre nom d\'utilisateur</p>';
      }
      else
      { $nom_d_utilisateur = echappement($_POST['nom_d_utilisateur']);
      }

      //vérifier l'exitence du username
      if (empty($_POST['mot_passe']))
      { $mot_passe = FALSE;
      $message .= '<p>Vous avez oublié d\'indiquer votre ancien mot de passe</p>';
      }
      else
      { $mot_passe = echappement($_POST['mot_passe']);
      }

      //véréfier l' existence d'un mot de passe
      if(empty($_POST['mot_de_passe1']))
      { $mot_de_passe = FALSE;
      $message .= '<p>Vous avez oublié d\'indiquer votre nouveau mot de passe </p>';
      }
      else
      {if ($_POST['mot_de_passe1'] == $_POST['mot_de_passe2'])
      { $mot_de_passe = echappement($_POST['mot_de_passe1']);
      }
      else
      { $mot_de_passe= FALSE;
      $message .= '<p>Votre mot de passe est différent de celui que vous avez précédement déclaré</p>';
      }
      }

      if ( $mot_passe && $mot_de_passe && $nom_d_utilisateur)
      {

      $nom_d_utilisateur = mysql_real_escape_string(htmlspecialchars($_POST['nom_d_utilisateur']));
      $mot_passe = mysql_real_escape_string(htmlspecialchars($_POST['mot_passe']));
      $mot_de_passe = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe']));

      $rq = "SELECT id_utilisateur FROM utilisateur
      WHERE (nom_d_utilisateur= '$nom_d_utilisateur' AND mot_de_passe=PASSWORD ('mot_passe'))";
      $result = mysql_query($rq)or die("Erreur lors de l'exécution de la requête.<br />\nMySQL a retourné :<br />\n". mysql_error());
      $nb = mysql_num_rows($result);
      if($nb == 1)
      { $ligne = mysql_fetch_array($result, MYSQL_NUM);
      //créer la requete
      $rq = "UPDATE utilisateur SET mot_de_passe=PASSWORD('$mot_de_passe')
      WHERE id_utilisateur=$ligne[0]";
      $result = mysql_query($rq);
      if (mysql_affected_rows()== 1)//si c'est ok
      {
      include('menu.php');
      //envoyer éventuellement un e-mail

      echo"<p><b>Votre nouveau mot de passe vient d'être modifié.</b></>";

      include('pied.php');

      exit();
      }
      else
      { echo"<p>Votre mot de passe n'a pas pu être modifié.".
      "<p></p>" . mysql_error() ."<p></p>";
      }
      }
      else
      { $message .= "<pVotre nom d'utilisateur et votre mot de passe ne correspondent pas à un utilisateur enregistré.</p>";
      }
      mysql_close();
      }
      else
      { //Quelque chose n'est pas correct

      $message .= "<p>Veuillez avoir l'obligeance de recommencer</p>";
      }

      }

      if(isset($message))
      { echo "<font color='red'>$message</font>";
      }
      ?>
      <form action="<?php echo $_SERVER['PHP_SELF'];?>"method="post">
      <fieldset>
      <legend>Veuillez remplir le formulaire ci-joint:</legend>

      <div id="username">
      <p><b>nom d'utilisateur :</b>
      <input type="text" name="nom_d_utilisateur"
      size="20" maxlength="40"
      value="<?php if (isset($_POST['nom_d_utilisateur']))
      echo $_POST['nom_d_utilisateur'];?>"/>
      </p>
      </div>

      <div id="email">
      <p><b>Mot de passe actuel :</b>
      <input type="password" name="mot_passe"
      size="20" maxlength="40"
      value="<?php if (isset($_POST['mot_passe']))
      echo $_POST['mot_passe'];?>"/>
      </p>
      </div>

      <div id="mot_passe_1">
      <p><b>Votre nouveau mot de passe :</b>
      <input type="password" name="mot_de_passe1"
      size="20" maxlength="40"
      value="<?php if (isset($_POST['mot_de_passe1']))
      echo $_POST['mot_de_passe1'];?>" />
      </p>
      </div>

      <div id="mot_de_passe2">
      <p><b>Confirnmez votre neauvou mot de passe :</b>
      <input type="password" name="mot_de_passe2"
      size="20" maxlength="40"
      value="<?php if (isset($_POST['mot_de_passe2']))
      echo $_POST['mot_de_passe2'];?>"/>
      </p>
      </div>

      </fieldset>
      <div id="button">
      <input type="submit" name="submit"
      value="Cahnger mon mot de passe"/>
      </div>
      </div>

      </form><!-- fin du formulaire-->

      <?php
      //fin du l'instruction conditionnelle principale
      include('pied.php');
      ?>

      </body>
      </html>

      quand je clique changer le mot passe rien se passe je reste a meme page et cela ne change meme pas le mot de passe dans la base de donnés
      -1
      1. Est ce que tu nommes bien ta page en .php ?

        ensuite qqs erreur s que je t'ai corrigé, vaoir les commentaires

        aussi c'est peut être un pb de copier coller mais il te manquait le < tout au début de la page pour <!DOCTYPE

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Document sans titre</title>
        <link href="mysql_connect_enregritrement.css" rel="stylesheet" type="text/css" />
        <link href="styles-enregistrer.css" rel="stylesheet" type="text/css" />
        </head>
        
        <body>
        <?php
        function echappement ($data){
        	global $bd;//connexion nécessaire
        	if(ini_get('magic_quotes_gpc')){
        		$data = stripslashes($data);
        	}
        	return mysql_escape_string($data);
        }//fin de la fonction
        
        //définir le titre de la page et metre le menu
        $titre_page = "changer mot de passe";
        include ('menu.php');
        //init des valeurs par défaut:
        $mot_passe =true;
        $mot_de_passe =true;
        $nom_d_utilisateur =true;
        
        
        
        if(isset($_POST['submit'])){//traiter le formulaire
        	mysql_connect("localhost", "root", "");
        	mysql_select_db("ma base");
        
        	$message = NULL;
        
        	//vérifier l'exitence du username
        	if (empty($_POST['nom_d_utilisateur'])){
        		$nom_d_utilisateur = FALSE;
        		$message .= '<p>Vous avez oubli&eacute; d\'indiquer votre nom d\'utilisateur</p>';
        	}else{
        		$nom_d_utilisateur = echappement($_POST['nom_d_utilisateur']);
        	}
        
        	//vérifier l'exitence du mot de passe
        	if (empty($_POST['mot_passe'])){
        		$mot_passe = FALSE;
        		$message .= '<p>Vous avez oubli&eacute; d\'indiquer votre ancien mot de passe</p>';
        	}else{
        		$mot_passe = echappement($_POST['mot_passe']);
        	}
        
        	//véréfier l' existence d'un mot de passe
        	if(empty($_POST['mot_de_passe1'])){
        		$mot_de_passe = FALSE;
        	$message .= '<p>Vous avez oubli&eacute; d\'indiquer votre nouveau mot de passe </p>';
        	}else{
        		if ($_POST['mot_de_passe1'] == $_POST['mot_de_passe2']){
        			$mot_de_passe = echappement($_POST['mot_de_passe1']);
        		}else{
        			$mot_de_passe= FALSE;
        			$message .= '<p>Votre mot de passe est diff&eacute;rent de celui que vous avez pr&eacute;c&eacute;dement déclar&eacute;</p>';
        		}
        	}
        
        if ( $mot_passe && $mot_de_passe && $nom_d_utilisateur){
        
        	$nom_d_utilisateur = mysql_real_escape_string(htmlspecialchars($_POST['nom_d_utilisateur']));
        	$mot_passe = mysql_real_escape_string(htmlspecialchars($_POST['mot_passe']));
        	$mot_de_passe = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe1']));//la tu avais une une erreur
        
        	$rq = "SELECT id_utilisateur FROM utilisateur
        	WHERE (nom_d_utilisateur= '$nom_d_utilisateur' AND mot_de_passe=PASSWORD ($mot_passe))";//la aussi il manquait le $ il ne ne faut pas dans ce cas les '
        	$result = mysql_query($rq)or die("Erreur lors de l'ex&eacute;cution de la requ&ecirc;te.<br />\nMySQL a retourn&eacute; :<br />\n". mysql_error());
        	$nb = mysql_num_rows($result);
        	if($nb == 1){
        		$ligne = mysql_fetch_array($result, MYSQL_NUM);
        		//créer la requete
        		$rq = "UPDATE utilisateur SET mot_de_passe=PASSWORD($mot_de_passe)
        		WHERE id_utilisateur='".$ligne[0]."'";//la aussi erreur
        		$result = mysql_query($rq);
        		
        		if (mysql_affected_rows()== 1)//si c'est ok
        		{
        		include('menu.php');
        		//envoyer éventuellement un e-mail
        
        
        		echo"<p><b>Votre nouveau mot de passe vient d'&ecirc;tre modifi&eacute;.</b></>";
        
        		include('pied.php');
        
        		exit();
        		}
        		else
        		{ echo"<p>Votre mot de passe n'a pas pu être modifi&eacute;."."<p></p>" . mysql_error() ."<p></p>";
        		}
        	}
        	else
        	{ $message .= "<pVotre nom d'utilisateur et votre mot de passe ne correspondent pas à un utilisateur enregistr&eacute;.</p>";
        	}
        mysql_close();
        }
        else
        { //Quelque chose n'est pas correct
        
        $message .= "<p>Veuillez avoir l'obligeance de recommencer</p>";
        }
        
        }
        
        if(isset($message))
        { echo "<font color='red'>$message</font>";
        }
        ?>
        <form action="<?php echo $_SERVER['PHP_SELF'];?>"method="post">
        <fieldset>
        <legend>Veuillez remplir le formulaire ci-joint:</legend>
        
        
        
        
        <div id="username">
        <p><b>nom d'utilisateur :</b>
        <input type="text" name="nom_d_utilisateur"
        size="20" maxlength="40"
        value="<?php if (isset($_POST['nom_d_utilisateur']))
        echo $_POST['nom_d_utilisateur'];?>"/>
        </p>
        </div>
        
        
        <div id="email">
        <p><b>Mot de passe actuel :</b>
        <input type="password" name="mot_passe"
        size="20" maxlength="40"
        value="<?php if (isset($_POST['mot_passe']))
        echo $_POST['mot_passe'];?>"/>
        </p>
        </div>
        
        
        <div id="mot_passe_1">
        <p><b>Votre nouveau mot de passe :</b>
        <input type="password" name="mot_de_passe1"
        size="20" maxlength="40"
        value="<?php if (isset($_POST['mot_de_passe1']))
        echo $_POST['mot_de_passe1'];?>" />
        </p>
        </div>
        
        
        <div id="mot_de_passe2">
        <p><b>Confirnmez votre nouveauu mot de passe :</b>
        <input type="password" name="mot_de_passe2"
        size="20" maxlength="40"
        value="<?php if (isset($_POST['mot_de_passe2']))
        echo $_POST['mot_de_passe2'];?>"/>
        </p>
        </div>
        
        
        </fieldset>
        <div id="button">
        <input type="submit" name="submit"
        value="Changer mon mot de passe"/>
        </div>
        </div>
        
        </form><!-- fin du formulaire-->
        
        
        <?php
        //fin du l'instruction conditionnelle principale
        include('pied.php');
        ?>
        
        </body>
        </html>
        -1