Ameliorer mon code en PHP

Fermé
mancini - 14 juil. 2006 à 16:10
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 14 juil. 2006 à 21:27
salut,
voilà j'aimerai ameliorer mon code en affichant un message box si le mot de passe entré n'est pas bon.
Je l'ai fait mais bon le message s'affiche d'emblée alors qu'on n'a même pas entré un mot de passe.J'ai vraiment perdu mon latin car j'arrive plus à avancer. Je vous donne tout le code en espérant qu'il y aura quelqu'un qui pourra me débloquer. L'intruction en question est délimitée par des étoiles.
Code : Autre

<?php
// J'ai choisi le mot de passe "toto2006"

if (isset($_POST['mot_de_passe'])) // Si la variable existe
{
// On se crée une variable $mot_de_passe avec le mot de passe entré
$mot_de_passe = $_POST['mot_de_passe'];
}
else // La variable n'existe pas encore
{
$mot_de_passe = ""; // On crée une variable $mot_de_passe vide
}


if ($mot_de_passe == "toto2006") // Si le mot de passe est bon
{
// On affiche la page cachée.
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>accès au Forum</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h2>Voici la porte d'accès :</h2>




<hr />


</body>
</html>

<?php
}
/****************voici le code dont je vous parle***********************************************/
if ($mot_de_passe != "toto2006"){// le mot de passe n'est pas bon

print'Veuillez entrer le mot bon de passe';

?>

<form method="post">
<p>
<input type="text" name="mot_de_passe" /> <input type="submit" value="Valider" />
</p>
</form>

<?
}
/*****************fin de if quand le mot de passe n'est pas bon*****************************************/
else
{
// On affiche la zone de texte pour rentrer le mot de passe.
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Page protégée par mot de passe</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>Veuillez entrer le mot de passe pour avoir accès au Forum :</p>
<form action="friends.php" method="post">
<p>
<input type="text" name="mot_de_passe" /> <input type="submit" value="Valider" />
</p>
</form>


</body>
</html>

<?php

} // Fin du else

// Fin du code :)
?>

merci pour tout aide.
A voir également:

3 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
14 juil. 2006 à 17:33
le message s'affiche d'emblée alors qu'on n'a même pas entré un mot de passe

Normal. La page est executée une première fois pour afficher le formulaire.
Donc ici, $_POST['mot_de_passe'] n'existe pas, donc $mot_de_passe = "" donc $mot_de_passe != "toto2006" donc c'est comme si le mot de passe n'était pas bon...
0
merci,
mais comment je dois rectifier mon code afin que le mot de passe soit bon?
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
14 juil. 2006 à 21:27
Si la variable post n'existe pas encore, donne la valeur NULL à $mot_de_passe pour lui donner une valeur vide au lieu de lui donner la valeur d'une chaine vide, ce qui est différent. Ca évitera l'ambiguité entre mot de passe vide et mot de passe non envoyé.

=> $mot_de_passe = NULL;

Puis au lieu de tester uniquement si $mot_de_passe est différent de toto2006, vérifie aussi qu'il est différent de NULL (mot de passe non envoyé), soit:

=> if ( ($mot_de_passe != "toto2006") && ($mot_de_passe !=NULL) )
0