Se diriger vers autre page grace au attribut action du formulaire

Fermé
zakri-04 Messages postés 23 Date d'inscription dimanche 15 novembre 2020 Statut Membre Dernière intervention 9 août 2023 - 16 mars 2021 à 20:31
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 19 mars 2021 à 20:07
Bonjour,
Configuration: Windows / Firefox 86.0


Comme je suis débutant dans PHP je voudrais grace au attribut action et à l'instruction echo du php dans la balise <form> </form> du formulauire soit rester sur la page initiale (formulaire3) soit se diriger vers autre page (secret2) mais ça n'a pas marché la page formulaire contient un champs text pour entrer un mot de passe qui est 'kangourou' il faut qu'il soit vrai pour se diriger vers la page secret2 voici les codes :

code page formulaire3 :
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Formulaire 3 </title>
	</head>
	<body>
		<?php
			if(!empty($_POST['pswd']) AND ($_POST['pswd'] == "kangourou") AND (isset($_POST['envoyer'])) AND ($_POST['envoyer']=='ENVOYER')) {
				$page = 'secret2.php';
				echo($page);
			}
			if (empty($_POST['pswd']) OR ($_POST['pswd'] !== "kangourou") AND (isset($_POST['envoyer'])) AND ($_POST['envoyer']=='ENVOYER')){
				$page = 'formulaire3.php';
			}
		?>
		<form method="post" action="<?php echo ($page); ?>" >
			<p>
				<label for="motpass"> Veuillez entrer votre mot de passe SVP : </label>
				<input type="password" name="pswd" id="motpass"> <br />
				<input type="submit" value="ENVOYER" name="envoyer"> <br />
			</p>
		</form>
				<br />
		<?php
			if (empty($_POST['pswd']) OR ($_POST['pswd'] !== "kangourou")){
				if ((empty($_POST['pswd'])) AND (isset($_POST['envoyer'])) /*AND ($_POST['envoyer']=='ENVOYER')*/){
					echo " VEUILLEZ REMPLIR LE CHAMPS!!!!!!! <br />";
				}
			
				if ((!empty($_POST['pswd'])) AND ($_POST['pswd'] !== "kangourou") AND (isset($_POST['envoyer'])) /*AND ($_POST['envoyer']=='ENVOYER')*/){
					echo "VOTRE MOT DE PASSE EST INCORRECT!!!!!!!!!!! <br />";
				}
			}	
		?>
	</body>
</html>


et voici le code de la page secret2 :

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>SECRETS 2</title>
	</head>
	<body>
		<?php
			echo "LA LISTES DES SECRETS EST :<br>
			....................<br/>
			....................<br/>
			....................<br>
			....................<br>
			....................<br>
			....................<br>
			etc";
		?>
	</body>
</html>


Le problème est qu'il ne se dirige pas sur la page secret2.php meme si la condition est remplie il reste toujours dans la page formulaire3.php

Merci de bien me répondre.

Cordialement.
A voir également:

3 réponses

zakri-04 Messages postés 23 Date d'inscription dimanche 15 novembre 2020 Statut Membre Dernière intervention 9 août 2023 2
17 mars 2021 à 22:11
Merci beaucoup pour votre réponse
mais est ce qu'il y a une solution avec ma instruction qui ecrit la page dynamiquement dans l'attribut action de la balise form
Merci
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
17 mars 2021 à 22:16
Non
0
zakri-04 Messages postés 23 Date d'inscription dimanche 15 novembre 2020 Statut Membre Dernière intervention 9 août 2023 2
Modifié le 19 mars 2021 à 20:01
J'ai essayé avec ce code
page formulaire3_2
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Formulaire 3_2 </title>
</head>
<body>
<?php
$page = 'formulaire3-2.php';
if ($_POST && $_POST['pswd'] === "kangourou") {
    $page = 'secret2.php';
}
?>
<form method="post" action="<?php echo($page); ?>">
    <p>
        <label for="motpass"> Veuillez entrer votre mot de passe SVP : </label>
        <input type="password" name="pswd" id="motpass"> <br/>
        <input type="submit" value="ENVOYER" name="envoyer"> <br/>
    </p>
</form>
<br/>
<?php
if ($_POST) {
    if (empty($_POST['pswd']) || $_POST['pswd'] !== "kangourou") {
        if (empty($_POST['pswd']) ) {
            echo " VEUILLEZ REMPLIR LE CHAMPS!!!!!!! <br />";
        }
 
        if ($_POST['pswd'] !== "kangourou") {
            echo "VOTRE MOT DE PASSE EST INCORRECT!!!!!!!!!!! <br />";
        }
    }
}
?>
</body>
</html>

mais on se dirige vers la page secret2.php qu'aprés la deuxième bonne tentative lorsqu'on entre le bon mot de passe 'kangourou' on reste sur la meme page mais lorsqu'on le réentre pour la deuxième fois on se dirige vraiment pour notre page secret2.php
Je n'arrive pas à trouver le problème.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 mars 2021 à 20:07
En même temps ... je t'ai déjà donné la solution ... et indiqué que ce que tu voulais faire n'était pas possible ...
-1
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
16 mars 2021 à 21:24
Bonjour,

Un peu de lecture :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Ce qui donne
<?php
//Affichage des erreurs php
error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);

//récupération PROPRE des variables AVANT de les utiliser
$pwd = isset($_POST['pswd']) ? trim($_POST['pswd']) : NULL;

//autre variable
$message = "";

//traitement du formulaire
if(isset($_POST['envoyer'])){
  if($pwd == "kangourou"){
    header('location: secret2.php'); // redirection en php
    exit; // toujours mettre un exit après une redirection
  }elseif(empty($pwd){
     $message = " VEUILLEZ REMPLIR LE CHAMPS!!!!!!! <br />";
  }else{
    $message = "VOTRE MOT DE PASSE EST INCORRECT!!!!!!!!!!! <br />";
  }
  
}

?>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Formulaire 3 </title>
	</head>
	<body>
		<form method="post" action="" >
			<p>
				<label for="motpass"> Veuillez entrer votre mot de passe SVP : </label>
				<input type="password" name="pswd" id="motpass"> <br />
				<input type="submit" value="ENVOYER" name="envoyer"> <br />
			</p>
		</form>
				<br />
		<?php
    echo $message;
		?>
	</body>
</html>

-1