Anti spam et anti robot : securisation de formulaire sans captcha


Contenu du snippet

Ce code source permet de sécuriser un formulaire (email, inscription, etc...) sans utiliser d'image de confirmation visuel (de type captcha).
Ce code permet d'empêcher les robots spammeurs de valider un formulaire.

A savoir qu'un captcha est lourd (car parfois illisible pr l'homme, et plus simple pr la machine), qu'en plus il est possible aujourd'hui de lire des captcha via logiciel.

Ma méthode filtrera la majorité des robots, celle ci peut être contournée, mais cela demande au spammeur d'étudier votre site pr contourné la protection, ce qui n'arrivera presque jamais.

Théorie :
Vous placez sur votre formulaire en bas de celui-ci une case à cocher du style "Je certifie etre un être humain".

La suite dans la partie code source...

Source / Exemple :


CONTENU de 'mapage.php'

<?php
// Récuperation des valeurs en GET ou en POST
$try=(isset($_GET['try'])?$_GET['try']:(isset($_POST['try'])?$_POST['try']:''));
$nobotv=(isset($_GET['nobotv'])?$_GET['nobotv']:(isset($_POST['nobotv'])?$_POST['nobotv']:''));
$nobotc=(isset($_GET['nobotc'])?$_GET['nobotc']:(isset($_POST['nobotc'])?$_POST['nobotc']:''));
$nobots=(isset($_GET['nobots'])?$_GET['nobots']:(isset($_POST['nobots'])?$_POST['nobots']:''));

// Variable
$nobot = time().'_'.rand(50000, 60000);

if($try=='send')
{
  // Ici Le visiteur soumissione le formulaire  
	if(($nobotc!=md5($nobotv)) or ($nobotv=='') or ($nobots!='')) 
	{ 
	  echo "\n<br />  <b>Anti-Spam</b> : Vous n'avez pas cocher la case !"; 
	  // ICI on réafiche votre formulaire, car le test a echoué
	  // On réaffiche le formulaire
	  include 'mon_formulaire.php';	
	}
	else
	{
	  // Le test est bon... On continue
          // Envoi du mail, insertion ds MySQL, ou ce que vs voulez...
	}
}
else
{
  // Ici on affiche le formulaire, c'est l'affichage par défaut
  include 'mon_formulaire.php';	
}
?>

CONTENU DE 'mon_formulaire.php'

<form action="mapage.php" method="POST">
<input type="hidden" name="try" value="send">
<input type="hidden" name="nobotv" value="<?php echo $nobot; ?>">

<!-- ICI tout ce que vous voulez dans votre formulaire HTML -->

<!-- On Rajoute cette petite case à cocher en bas du formulaire -->

<h3>Anti-Spam :</h3>
<input type="checkbox" name="nobotc" value="<?php echo md5($nobot); ?>" />Je confirme que je suis un être humain, et pas un robot spammeur.
<div style="position: absolute; visibility: hidden; left: -5000; top : -5000">
<br><input type="checkbox" name="nobots" value="<?php echo time(); ?>" />I'm a Stupid Spam-Robot
</div>

</form>

Conclusion :


L'explication final :
Lors qu'un être humain passera sur votre formulaire celui ci cochera la case "je suis un être humain", un stupide robot lui cochera toutes les cases, ou aucune des cases.
A savoir qu'un être humain ne verra pas la case "I'am a Stupid Spam Robot". (le champ est masqué)
Résultat : un robot ne parvient pas à valider se formulaire !

C'est très simple, très bête, mais très efficasse, mais fallais t-il y penser !?
Pour ne pas qu'un robot puisse retenir les réponses à cocher ou à ne pas cocher, j'ai integrer l'heure dans le POST, et une fonction MD5.

Il vous est aussi possible de vérifier l'heure...
Il suffit pr cela de comparer $nobotc et time()

Après installation sur des Form2mail, je n'ai plus de robots ;-)

Voir démo ici : http//xxxxxxxxxxxxx.com/?pg=mailme

- - - - - - - - - - - - - - - - - - - - - - - -

Afin que vous puissiez avoir une démo de l?efficacité de mon système, j?avais laissé l?adresse de mon site, avec la page de mon formulaire de mail (sendmail) destiné à mes clients pour me contacter.
Ce système anti-spam monté sur mon Sendmail empêche un robot de valider le formulaire.
En plus de cela, mon sendmail vérifie d?autres champs « nom, message, votre adresse, et sujet » et n?envoi pas de mail si ceux-ci n?ont pas été définit.

Il était donc possible aux visiteurs de codes-sources.com, d?aller sur mon sendmail, de cliquer sur le bouton « valider », sans cocher la case « anti-spam » (de voir apparaître le message d?erreur comme quoi il est nécessaire de cocher la case), ou de la cocher, et de voir apparaître en erreur que les champs « nom, message, adresse, et sujet » n?ont pas été définit.

Résultat : On a testé le système, et sans m?envoyer de mail.
Amplement suffisant pour voir que mon système ANTI-SPAM marche !

Malgré ma demande express demandé aux visiteurs de codes-sources.com, de ne pas m?envoyer de message juste pr écrire « test », j?en réceptionne encore plrs par jour !

Je supprime donc l?adresse de démo de mon système, à vous de bien lire le code et d?en comprendre le fonctionnement, le principe, etc?

Dommage pour ceux « qui n?ont rien fait » ils payent pour les idiots (qui malgré avoir lu l?ont fait quand même) et les dyslexiques.


SI JE METS EN PLACE UN SYSTEME ANTI-SPAM (anti-robot) c?est pour me faire SPAMMER par des Humains ! ^_^

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.