Page protegée par mot de passe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Page protegée par mot de passe

par Keito » 02 avr. 2006, 17:00

J'ai finalement réussit à faire ce que je voulais en fesant comme ceci :

Code : Tout sélectionner

<?php if (isset($_POST['mot_de_passe'])) { $mot_de_passe = $_POST['mot_de_passe']; } else { $mot_de_passe = ""; } if ($mot_de_passe == "knowledges") { ?> <!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>Mot de passe correct, vous voilà en zone V.I.P !</p> </body> </html> <?php } else { ?> <!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 obtenir l'accès V.I.P :</p> <form method="post"> <p> <input type="text" name="mot_de_passe" /> <input type="submit" value="Valider" /> </p> </form> </body> </html> <?php } ?>
mais par contre, je n'ai pas compris comment tester si $boutton est vrai ou pas ( si la personne a cliquer sur le bouton ).

par Invité » 31 mars 2006, 23:23

Tout d'abord, je te remercie pour ton aide jpeaul.
J'essayerai ce que tu me propose demain car il se fait tard et mon lit m'appelle ;)

par jpaul » 31 mars 2006, 22:24

Dans ton formulaire, si tu met un nom à ton champ SUBMIT :
<input type="submit" value="Valider" name="bouton" />
il aura toujours une valeur.

Si tu le testes $bouton et que le résultat est qu'il n'existe pas, tu peux en déduire que le formulaire n'as pas été validé...

Tu testes $bouton :
- s'il n'existe pas, tu demandes le mot de passe
- s'il existe tu testes le mot de passe

soit le mot de passe est bon et tu laisses entrer
soit il est mauvais et tu adoptes l'attitude que tu veux pour quelqu'un qui s'est planté de mot de passe ou qui n'en a pas mis...

par Keito » 31 mars 2006, 22:18

J'ai penser à un moyen different :

Code : Tout sélectionner

<!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 par mot de passe</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <?php if (isset($_POST['mot_de_passe'])) { $mot_de_passe = $_POST['mot_de_passe']; } else { $mot_de_passe = ""; } if ($mot_de_passe != "knowledges") { ?> <!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 par mot de passe</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <p> Saisissez un mot de passe. </p> </body> </html> <?php } else { ?> <!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 protegée</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <p>Vous voila sur la page protegée.</p> </body> </html> <?php } ?> <form method="post"> <p> <input type="text" name="mot_de_passe" /> <input type="submit" value="Valider" /> </p> </form> </body> </html>
Mais dans ce cas ci, j'aimerai ne plus afficher la zone de texte si $mot_de_passe == "knowledges"

par Keito » 31 mars 2006, 21:55

Alors j'ai effectuer des modifications :

Code : Tout sélectionner

<!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 par mot de passe</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <?php if (isset($_POST['mot_de_passe'])) { $mot_de_passe = $_POST['mot_de_passe']; } else { $mot_de_passe = ""; } if ($mot_de_passe == "knowledges") { ?> <!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 protegée</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <p>Vous voila sur la page protegée.</p> </body> </html> <?php } else { ?> <!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 par mot de passe</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <p> Réessaye. </p> </body> </html> <?php } ?> <form method="post"> <p> <input type="text" name="mot_de_passe" /> <input type="submit" value="Valider" /> </p> </form> </body> </html>
Par contre, maintenant je voudrais comprendre comment faire pour ne pas afficher le deuxieme "else" lorsque rien n'est rentré dans la zone de texte ( lorsque l'on arrive pour la premiere fois sur la page par exemple ).
Par ailleur, j'ai reglé le probleme precedement dit. Il fallait faire un cas ou le mot de passe n'etait pas saisie ( $mot_de_passe = ""; ).
Donc voila, je suis très motivé pour comprendre, j'espere que vous l'aurez compris.

:)

Page protegée par mot de passe

par Keito » 31 mars 2006, 21:36

Bonjour,
Tout d'abord, je voudrais dire un bonjour à toutes les personnes de ce forum, en esperant faire mon ascension dans le php avec vous.
Donc je débute, en suivant les cours du zero. J'en suis arrivé à mon premier TP : protegé quelque chose par mot de passe.

Voici mon code :

Code : Tout sélectionner

<!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>Mon premier Travaux Pratique</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <?php if (isset($_POST['mot_de_passe'])) { $mot_de_passe = $_POST['mot_de_passe']; } if ($mot_de_passe == "knowledges") { echo "Bien joué !"; } else { echo "Dommage !"; } ?> <form method="post"> <p> <input type="text" name="mot_de_passe" /> <input type="submit" value="Valider" /> </p> </form> </body> </html>
Or, j'ai l'erreur suivante qui s'affiche en haut de ma zone de saisie. Pourtant j'ai bien renseigné que la variable $mot_de_passe équivaut à $_POST['mot_de_passe'], le resultat de ce qu'a saisie le visiteur comme mot de passe.
Notice: Undefined variable: mot_de_passe in c:\documents and settings\propriétaire\bureau\testsphp\travauxpratiques.php on line 14
De plus, dès le 1er chargement de la page, on voit déjà le message : "Dommage". Comment faire pour n'afficher aucun message initiale, juste la zone de saisie ?
Merci d'avance. :)