boie22 Posté 16 Octobre 2004 Posté 16 Octobre 2004 Bonjour, Je suis débutant voire balbutiant en PHP et j'aimerais résoudre un petit problème. Je crée un site dont une page est à accès réservé par mot de passe. Il y a donc un formulaire qui envoie le MDP et, s'il est correct, la page s'ouvre. Mon pb est le suivant : le script fonctionne bien si je clique sur OK dans le formulaire ; en revanche il ne fonctionne pas si j'appuie sur Entrée. Quelqu'un aurait-il la solution ? Merci d'avance.
rottman Posté 16 Octobre 2004 Posté 16 Octobre 2004 Utilises-tu la method GET ou POST pour le fomulaire ? Ce serait bien si on pouvait voir un aperçu du code...
boie22 Posté 16 Octobre 2004 Auteur Posté 16 Octobre 2004 J'utilise la méthode Post. Le formulaire : <FORM ACTION="private2.php" METHOD="POST"> <tr><td width=5></td><TD> <FONT COLOR=#660000>Mot de passe (indice : future avocate)</FONT></TD></TR> <tr><td width=5></td><TD><INPUT TYPE="password" NAME="password"> <INPUT TYPE="submit" NAME="ok" VALUE="ok"></TD></TR> </FORM> Le script : <?php if ($_POST['ok'] == "ok") { if (empty($password)) { die ("Vous ne vous êtes pas identifié"); } if (!($password== "sandrine")) { die ("Votre mot de passe n'est pas correct"); } echo '<P><font size="2" face="Arial, Helvetica, sans-serif"><b> Bienvenue sur la page reservée aux amis. Vous y trouverez avant tout des photos et quelques news. </b></font></P>'; } ?> Merci.
martin© Posté 16 Octobre 2004 Posté 16 Octobre 2004 Malheureusement, si ton formulaire ne contient qu'un seul champs de type input, IE n'envoie PAS le submit et sa valeur (il n'envoie pas $_POST['ok']). Ta solution, soit essayer de rajouter un champs supplémentaire (pour le login par ex), soit plus simple et c'est ce que je ferai, tester l'existence de $_POST['password'] plutôt que l'existence du submit. Au passage, tu ne devrai pas récupérer ton $password directement, çà ne marchera plus avec register_global à off, ce qui est censé être par défaut dans les dernière version de php. Donc quelque chose comme çà: if (isset($_POST['password']){ if ($_POST['password']!= 'sandrine'){ die ("Votre mot de passe n'est pas correct"); }else{ // ton html };};
Anonymus Posté 17 Octobre 2004 Posté 17 Octobre 2004 Pour ton histoire de $password, le problème, comme le souligne martin, est que n'importe qui passant une url du type : file.php?password=sandrine aura accès à ton fichier. Autrement dit, il est 'hyper' vulnérable. Si tu passes par $_POST, tu limites énormément les risques. Anonymus.
Maxim Posté 23 Octobre 2004 Posté 23 Octobre 2004 Malheureusement, si ton formulaire ne contient qu'un seul champs de type input, IE n'envoie PAS le submit et sa valeur (il n'envoie pas $_POST['ok']). Il n'y a aucun rapport. Le formulaire renvoit un "contenu" pour $_POST['ok'] si il y a action sur le bouton submit de nom "ok" (name="ok"). Il vaudrait ici la valeur "ok" (puisque value="ok"). Mais, en appuyant sur Entrée, il n'y a pas de clic sur le dit bouton, donc pas d'action. Pas d'action, pas de variable. Pas de variable, heu... pas de variable.
Anonymus Posté 25 Octobre 2004 Posté 25 Octobre 2004 Tu peux simuler au serveur l'appui sur la touche 'entrée', sur un bouton ou tout autre. Pour cela, tu envoies, avec les entetes, la méthode et les variables qui vont avec. Pas besoin de formulaire pour répondre à... un formulaire. De même, pas besoin de bouton pour envoyer 'submit' à POST.
Maxim Posté 1 Novembre 2004 Posté 1 Novembre 2004 en utilisation normale bien sûr. Apres, si tu veux tricher...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant