Bonjour, j’ai construit une table qui ne contient qu’un seul enregistrement, comportant les colonnes « Date » et « mot de passe »
Ensuite j’ai créé un formulaire comportant un champ « mot de passe », devant permettre à un employé unique d’accéder à un menu.
Le code marche très bien lorsque l’employé saisi dans le formulaire le mot de passe correct.
Par contre lorsqu’il introduit un mot de passe incorrect le code ne lui affiche pas le message d’erreur prévu a cet effet c’est-à-dire « Mot de passe incorrect » et une page blanche vide s’affiche
Quelqu’un peut-il m’aider
Voici mon code

Le formulaire

<html>
    <head>
        <meta charset="utf-8" />
        
    </head>
    <body>
	
	
	// formulaire de saisie du mot de passe
	<form action="menu.php" method="post">
			 Veuillez saisir votre mot de passe :
			 <input type="varchar" name="sesame" />
			 <br><br/>
             <input type="submit" value="Valider" />
             </p>
         </form>

    </body>
</html>



La page de verification menu.php

<html>
    <head>
        <meta charset="utf-8" />
        
    </head>
    <body>
	
 <?php	
 
	if (isset($_POST['sesame'])) 
	    {
          $sesame = $_POST['sesame'];
	
	      // connection a la table mpentree
	          try
		         { 
		              $bdd = new PDO('mysql:host=localhost;dbname=mprojets','root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
		         }
					   
		         catch(Exception $e)
			     {
			      die('Erreur : '.$e->getMessage());
			     }

		  // On récupère tout le contenu de la table mpentree

             $req = $bdd->prepare('SELECT * FROM mpentree WHERE mp = :clef');
		     $req-> execute(array(
            'clef' => $sesame,
			));
            while ($donnees = $req->fetch())
                {
          //On test la validité du mot de passe  
                   if ($sesame == $donnees['mp'] )
                     {
                          echo 'Menu general';
                     }
                     else
                     {
                         echo 'Mot de passe incorrect';
                     }
                    $req->closeCursor(); // Termine le traitement de la requête     
                 }            
        }
?>
 </body>
</html>
salut,
c'est normal, tu n'es entrain de sélectionner que les entrées où le mot de passe est correct (c'est dans ta clause WHERE).
Dans le cas où le mot de passe est incorrect, ta requête ne retourne rien et tu n'entres donc pas dans la boucle WHILE.

Il faudrait dans un premier temps filtrer sur autre chose que le mot de passe, puis vérifier dans un second temps si le mot de passe est correct.