[RESOLU] un navigateur as t'il une memoire ?

Eléphanteau du PHP | 40 Messages

09 mars 2014, 19:15

Bonjour à tous,

Afin d'éviter un robot qui poste dans mon livre d'or en utilisant mon nom de domaine comme adresse mail j'ai donc écrit ceci

Code : Tout sélectionner

<?php $pos1 = stripos($_POST['mail'], "@monnom.fr"); if ($pos1 !== false) { die('bot!'); } else{ } ?>
afin de vérifier le champ mail, et de bloquer le fameux mail.
Cela fonctionne bien sauf que si je ferme le navigateur ou je retourne en arrière et que je poste un nouveau message je me retrouve avec les deux !
J'ai donc ajouté ceci,

Code : Tout sélectionner

<?php $pos1 = stripos($_POST['mail'], "@monnom.fr"); if ($pos1 !== false) { Header("Pragma: no-cache"); die('bot!'); } else{ } ?>
pensant que en vidant le cache du navigateur j'allais solutionner cet effet mémoire, mais ce n'est pas ça !!!
Auriez-vous une explication pour m'aider ?
Merci par avance

ViPHP
xTG
ViPHP | 7331 Messages

10 mars 2014, 15:16

Un navigateur ne met jamais la page résultante d'une requête POST en cache.
Je pencherai plutôt sur une coquille dans ton code PHP qui ferrai qu'on ne passe pas toujours dans la portion de code que tu nous montres.
Portion de code sur laquelle je n'ai rien à redire.

Eléphanteau du PHP | 40 Messages

11 mars 2014, 12:53

Bonjour et merci xTG pour ta réponse,

voici le code complet de ma page si tu as 2 minutes à m'accorder pour m'expliquer le pourquoi du comment !

Code : Tout sélectionner

<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <meta name="description" CONTENT=""> <meta HTTP-EQUIV="IMAGETOOLBAR" content="no" SCROLLING="yes" > <meta name="keywords" CONTENT=""> <head> <title>Livre d'or</title> <script src="jquery.js"></script> <style type="text/css"> body { background: #000000; color: #000000; font-family: Verdana ; color:white; font-size:14px; } </style> <style type="text/css"> a:link { text-decoration:none; border: none; cursor: pointer; outline-style:none; } a:hover { color:black; border: none; cursor: pointer; text-decoration:none; outline-style:none; } .submit { color:#ffffff; font-family: 'monotype corsiva'; font-size: 18px; cursor: pointer; border: none; outline-style:none; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; border: 2px solid #ffffff; background:#000000; } .submit:hover { color:#000000; font-family: 'monotype corsiva'; font-size: 18px; cursor: pointer; border: none; outline-style:none; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; border: 2px solid #000000; background:#ffffff; } button.css3button { color:#ffffff; cursor: pointer; border: none; outline-style:none; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; border: 2px solid #ffffff; background:#000000; } button.css3button:hover { color:#000000; cursor: pointer; border: none; outline-style:none; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; border: 2px solid #000000; background:#ffffff; } </style> <style type="text/css"> div.grande { width : 70%; } p{ line-height:25px; } .box { padding: 20px; background: #eeeeee; border: 1px solid #FFFCFC; border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; } </style> <!--[if !IE]><!--> <style type="text/css"> fieldset { border:1px solid #FFFFFF; border-radius:10px; moz-border-radius:10px; webkit-border-radius:10px; padding-left:1px; height:80px; width:400px; margin-bottom:1px; } </style> <!--<![endif]--> <style type="text/css"> #website { visibility:hidden; } span { border:1px solid red; padding:3px; } legend { color:white; font-weight:bold align = left; } </style> <style type="text/css"> .text { background-color:white; color:black; cursor: URL() outline-style:none; -moz-border-radius: 15px; -webkit-border-radius: 15px; border-radius: 15px; padding-left:15px; height:20px; width:180px; margin-top: 0%; margin-bottom: 0%; margin-left:0%; margin-right:0%; border: 2px solid black; } .text:hover { background-color:gold; outline-style:none; } .text1 { background-color:white; color:black; outline-style:none; -moz-border-radius: 15px; -webkit-border-radius: 15px; border-radius: 15px; padding-left:15px; height:20px; width:180px; margin-top: 0%; margin-bottom: 0%; margin-left:0%; margin-right:0%; border: 2px solid black; } .text1:hover { background-color:gold; outline-style:none; } .text2 { background-color:white; color:black; outline-style:none; -moz-border-radius: 15px; -webkit-border-radius: 15px; border-radius: 15px; padding-left:15px; height:80px; width:400px; margin-top: 0%; margin-bottom: 0%; margin-left:0%; margin-right:0%; border: 2px solid black; } .text3 { background-color:white; color:black; outline-style:none; -moz-border-radius: 15px; -webkit-border-radius: 15px; border-radius: 15px; padding-left:15px; height:2px; width:180px; margin-top: 0%; margin-bottom: 0%; margin-left:0%; margin-right:0%; border: 2px solid black; } textarea{ resize:none;} .text2:hover { outline-style:none; background-color:gold; } </style> <?php if($_POST['website'] != ""){ die('Connard de bot!'); } else{ } ?> <?php if(isset($_POST['nobot'])) { // la case est cochée } ?> <script type="text/javascript"> var a = Math.ceil(Math.random() * 10); var b = Math.ceil(Math.random() * 10); var c = a + b function DrawBotBoot() { document.write("Combien font "+ a + " + " + b +" ? "); document.write("<input id='BotBootInput' type='text' maxlength='2' size='2'/>"); } function ValidBotBoot(){ var d = document.getElementById('BotBootInput').value; if (d == c) { return true; } alert ('Le résultat est faux !'); return false; } </script> <script type="text/javascript"> function verif(){ return document.getElementById(nom).value.length > 1; } </script> <?php preg_match('/[bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ]{4,}/',$Message) ?> <?php $pos1 = stripos($_POST['mail'], "@fils-de-saone.fr"); if ($pos1 !== false) { exit(); } else{ } ?> <form method="post" action="writeguest.php" onsubmit="return ValidBotBoot()&& verif()"> <br/><div align="center" style="line-height:30px" ><FONT FACE="gabriola" size="9" color="white">Fils de Sa&ocirc;ne </FONT><br/><FONT FACE="gabriola" size="6" color="white">Livre d'or </FONT></div> <table border="0" align="center"> <tr><td><img src="test.jpg"></td><td> <Div> <table> <tr><td><FONT FACE="monotype corsiva" size="1" color="black">website :</FONT></td> <td><input type=text name=website id="website" class="text3" ></td></tr> <tr><td><FONT FACE="monotype corsiva" size="4" color="white">Nom :</FONT></td> <td><input type=text name="nom" id="nom" size=25 class="text"></td></tr> <tr><td><FONT FACE="monotype corsiva" size="4" color="white">Mail :</FONT></td> <td><input type=text name=mail size=25 class="text1"></td></tr> <tr><td><FONT FACE="monotype corsiva" size="4" color="white">Message :</FONT></td><td colspan=1> <textarea name=message style="overflow:auto " id="Message"rows=6 cols=47 class="text2"></textarea> </td></tr> </table> </Div> </td><td><img src="livre.jpg"></td></td></tr></table> <!-- On affiche l'image générée par notre script --> <script> $(document).ready(function(){ $('<div style="text-align:center;"><input type="checkbox" name="nobot" required="true"> Je confirme ne pas être un robot</div>').prependTo($('#maDiv')); }); </script> <div align="center"> <fieldset> <legend align="right"><FONT FACE="monotype corsiva" size="4" color="white"> Captcha Vérification</FONT></legend> <div style="text-align:center;"> <div id="maDiv"></div> </div> <br/> <div style="text-align:center;"> <script type="text/javascript">DrawBotBoot()</script> </div> </fieldset></div><br/> <div style="text-align:center; padding: 4px 0;"><input border=0 type="submit" class="submit" style="width: 160px;" value="Envoyer le formulaire"> </div> </form> <div style="text-align:center;"><button border=0 type="button" class="css3button" style="width: 160px;"onclick="location.href='http://fils-de-saone.fr/index.php';" onMouseOver="window.status='';return true"><FONT FACE="monotype corsiva" size="4">Retourner au menu</FONT></div> <div align="center" ><div class="grande" style="border:3px solid #000000; padding 1px;"><div style="text-align:left;"><FONT FACE="gabriola" size="6" color="white" >Vos impressions, commentaires:</FONT></div></div> <div align="center" > <div class="grande" style="border:3px solid #FFFFFF; padding 3px;"><div style="text-align:left;"> <?php include("guestbook.txt"); ?></div></div> <br/> <div style="text-align:center;"><button border=0 type="css3button" class="css3button" style="width: 160px;"onclick="location.href='http://fils-de-saone.fr/index.php';" onMouseOver="window.status='';return true"><FONT FACE="monotype corsiva" size="4">Retourner au menu</FONT></div> </body> </html>
Je te remercie par avance

ViPHP
xTG
ViPHP | 7331 Messages

11 mars 2014, 14:28

Tu ne vérifies aucune variable avant leur utilisation (la première fois que tu affiches la page ces variables n'existent pas ! $_POST['....'])...
De plus tu places le code au mauvais endroit, la vérification des champs postés doit se faire d'après ton code dans le fichier writeguest.php

Eléphanteau du PHP | 40 Messages

11 mars 2014, 14:44

Merci xTG pour cette analyse,

donc si je comprend bien ta réponse, je doit vérifier dans mon writeguest.php la variable mail et dans ce cas le message ne sera pas posté.
Ai-je bien compris ?
Je te remercie déjà pour avoir eu la gentillesse de lire mon code

Eléphanteau du PHP | 40 Messages

11 mars 2014, 14:51

Je viens de tester et effectivement ça fonctionne, j'ai positionné ma vérification du champ mail dans mon fichier writeguest.php

Code : Tout sélectionner

echo htmlspecialchars_decode(htmlentities($chaine, ENT_NOQUOTES, 'ISO-8859-1')); $nom = htmlspecialchars(stripslashes($_POST['nom'])); $mail = htmlspecialchars(stripslashes($_POST['mail'])); $pos1 = stripos($_POST['mail'], "@fils-de-saone.fr"); if ($pos1 !== false) { exit(); } else{ } $message = htmlspecialchars(stripslashes($_POST['message']));

je te remercie infiniment