Page 1 sur 1

Formulaire + SPAM

Posté : 03 oct. 2014, 09:55
par wurm1
Bonjour à tous.
Depuis quelques jours je reçois des spams à gogo par des robots spammeurs. J'aimerais éviter cela sans avoir besoin de mettre en place un captcha. J'ai lu sur divers articles sur le web qu'il est possible de mettre en place un champ texte supplémentaire, de le rendre invisible avec du CSS, et surtout, de le faire analyser, grâce au PHP, avant l'envoi final. Si ce champ reste vide, on estime qu'on a pas à faire à un bot, et on valide définitivement l'envoi. Si, au contraire, ce champ texte contient quelque chose, l'envoi n'est alors pas pris en compte.

Est-ce possible ?
Si oui, comment ?

P.S: je suis novice en php.

Voici l'index de ma page:
<!-------------- PHP FORMULAIRE --------------->    
<?php
if(isset($_POST['email']) and isset($_POST['sujet']) and isset($_POST['message']) and isset($_POST['name']))
{
        $destinataire = ***@***.fr';
        $email = htmlentities($_POST['email']);
        if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&','&',$email)))
        {
                $sujet = 'Flash Instal: '.stripslashes($_POST['sujet']);
				$name = stripslashes($_POST['name']);
				$message = "$name vous contacte via le formulaire ****.\n\n\n Message : \n\n" .stripslashes($_POST['message']);
                $headers = "From: <".$email.">\n";
                $headers .= "Reply-To: ".$email."\n";
                $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"";
                if(mail($destinataire,$sujet,$message,$headers))
                {
                        echo "<script>alert(\"Votre message a bien été envoyé. Nous répondrons à votre demande dans les plus brefs délais.\")</script>
						<form id=\"start\" action=\"\" method=\"post\">
	<h1 id=\"form\">Contactez **** !</h1>
	<table width=\"700\" border=\"0\">
  <tr>
    <td>	<p><label for=\"name\">Votre Nom</label>
		<input id=\"name\" type=\"text\" name=\"name\" />
	</p>
	<p>
		<label for=\"email\">Votre Email</label>
		<input id=\"email\" type=\"text\" name=\"email\" />
	</p>
    <p>
		<label for=\"sujet\">Sujet du message</label>
		<input id=\"sujet\" type=\"text\" name=\"sujet_\" />
	</p>
    </td>
    <td> 
    <p id=\"mess\">Votre Message <br /> 
		<textarea name=\"message\" cols=\"25\" rows=\"5\" id=\"textarea\"></textarea><br />
	</p>
	<p>
		<input type=\"submit\" value=\"Envoyer\" />
	</p>
        </td>
  </tr>
</table>
	
	</form>";
                }
                else
                {
                        echo "<script>alert(\"Une erreur c'est produite lors de l'envoi du message.\")</script>
						<form id=\"start\" action=\"\" method=\"post\">
	<h1 id=\"form\">*** !</h1>
	<table width=\"700\" border=\"0\">
  <tr>
    <td>	<p><label for=\"name\">Votre Nom</label>
		<input id=\"name\" type=\"text\" name=\"name\" />
	</p>
	<p>
		<label for=\"email\">Votre Email</label>
		<input id=\"email\" type=\"text\" name=\"email\" />
	</p>
    <p>
		<label for=\"sujet\">Sujet du message</label>
		<input id=\"sujet\" type=\"text\" name=\"sujet_\" />
	</p>
    </td>
    <td> 
    <p id=\"mess\">Votre Message <br /> 
		<textarea name=\"message\" cols=\"25\" rows=\"5\" id=\"textarea\"></textarea><br />
	</p>
	<p>
		<input type=\"submit\" value=\"Envoyer\" />
	</p>
        </td>
  </tr>
</table>
	
	</form>";
                }
        }
        else
        {
                echo "<script>alert(\"Le formulaire est incomplet.\")</script>
				<form id=\"start\" action=\"\" method=\"post\">
	<h1 id=\"form\">**** !</h1>
	<table width=\"700\" border=\"0\">
  <tr>
    <td>	<p><label for=\"name\">Votre Nom</label>
		<input id=\"name\" type=\"text\" name=\"name\" />
	</p>
	<p>
		<label for=\"email\">Votre Email</label>
		<input id=\"email\" type=\"text\" name=\"email\" />
	</p>
    <p>
		<label for=\"sujet\">Sujet du message</label>
		<input id=\"sujet\" type=\"text\" name=\"sujet_\" />
	</p>
    </td>
    <td> 
    <p id=\"mess\">Votre Message <br /> 
		<textarea name=\"message\" cols=\"25\" rows=\"5\" id=\"textarea\"></textarea><br />
	</p>
	<p>
		<input type=\"submit\" value=\"Envoyer\" />
	</p>
        </td>
  </tr>
</table>
	
	</form>";
        }
}
else
{
?>
<!----------------------------------------------->


<!---------------- FORMULAIRE ----------------->
<form id="start" action="" method="post">
	<a name="contact" style="color:#fff;"></a><h1 id="form">Contactez rapidement **** ! &nbsp; &diams; &nbsp;<a href="contact.php"  style="color:#dce7d6;"><strong>Plus d'infos, coordonnées, rayon d'action... sur la page Contact</strong></a></h1>
	<table width="700" border="0">
  <tr>
    <td>	<p><label for="name">Votre Nom</label>
		<input id="name" type="text" name="name" />
	</p>
	<p>
		<label for="email">Votre Email</label>
		<input id="email" type="text" name="email" />
	</p>
    <p>
		<label for="sujet">Sujet du message</label>
		<input id="sujet" type="text" name="sujet" />
	</p>
    </td>
    <td> 
    <p id="mess">Votre Message <br /> 
		<textarea name="message" cols="25" rows="5" id="textarea">***.</textarea><br />
	</p>
	<p>
		<input type="submit" value="Envoyer" />
	</p>
        </td>

  </tr>
</table>
	
	</form>
<?php
}
?>
</li>
<!----------------------------------------------->
Merci d'avance.

Re: Formulaire + SPAM

Posté : 03 oct. 2014, 15:33
par ynx
Salut,

Renseigne-toi sur les failles CSRF (Cross Site Request Forgeries). Tu peux trouver plusieurs tutoriels d'implémentations en php via ton moteur de recherche préféré pour te protéger contre ce type de faille.

Bonne journée

Re: Formulaire + SPAM

Posté : 06 oct. 2014, 10:07
par wurm1
Bonjour,

ok pour les tutoriels cependant aucun code ne ressemble au mien et étant débutant je ne sais pas l'adapter :?

Re: Formulaire + SPAM

Posté : 17 oct. 2014, 17:29
par wurm1
Personne pour m'aider ? Please ! :priere:

Re: Formulaire + SPAM

Posté : 18 oct. 2014, 07:22
par xTG
Ce n'est pas une question de code mais de protection de champs.
Donc de traitement des variables avant de les afficher.
Relis bien ce que tu as trouvé car à priori tu n'as pas compris ce que cela faisait... :|

Tu as X variables de données, tu as donc X variables à protéger.