Attention, c'est dépendant de jQuery, évidemment !
Permet d'éviter que des robots ne spamment un formulaire, tout en évitant à l'utilisateur de faire des actions pénibles (reconnaitre un mot, cliquer sur des cheminées, etc…)
$('.captchasanscaptcha').each(function() { var idform=$(this).attr('id'); var number = 1 + Math.floor(Math.random() * 6); if(!$(this).attr('id')) { $(this).attr('id', '86d77fbe5b' + number); } var part1 = '86d77fbe5b'; var part2 = 'afd6350d37'; var part3 = '68193ceaf4b4'; var first = $(this).find('input[type="text"]').first(); $(this).append('<input style="display:none;" id="csc'+idform+number+'" name="csc'+idform+'" type="text" value=""/>'); $(this).append('<input style="display:none;" id="csc-a'+idform+number+'" name="csc-a'+idform+'" type="text" value=""/>'); for(var i=1; i<=15; i++) { if(i==7) { $(this).append('<input style="display:none;" align="ABSBOTTOM" id="csc-checkbox-'+idform+number+'-'+i+'" name="csc-checkbox-'+idform+i+'" type="checkbox" value="'+part1+part2+part3+i+'"/>'); } else { $(this).append('<input style="display:none;" align="ABSBOTTOM" checked="checked" id="csc-checkbox-'+idform+number+'-'+i+'" name="csc-checkbox-'+idform+i+'" type="checkbox" value="'+part1+part2+part3+i+'"/>'); } } $('#'+$(this).attr('id')+' input[align="ABSBOTTOM"]').on('click', function(e) { $('#csc-a'+idform+number).val(':)'); }); $(this).on('submit', function(e) { if($('#csc-a'+idform+number).val() == '') { $('#csc'+idform+number).val(first.val()); $('#csc-a'+idform+number).val('1234567.csc.fr'); } if($('#csc-a'+idform+number).val() == '1234567.csc.fr') { $('#csc'+idform+number).val(first.val()); } }); });
<?php function csc_antispam($form_id) { $flag = false; if (isset($_POST) && count($_POST)>0) { if (!isset($_POST['csc'.$form_id])) $flag = true; if (isset($_POST['csc-a'.$form_id]) && md5($_POST['csc-a'.$form_id])!='86d77fbe5bafd6350d3768193ceaf4b4') $flag = true; if (isset($_POST['csc-checkbox-7'.$form_id])) $flag = true; for ($i=1;$i<=15;$i++) { if ($i!=7 && (isset($_POST['csc-checkbox-'.$form_id.$i]) && $_POST['csc-checkbox-'.$form_id.$i]!='86d77fbe5bafd6350d3768193ceaf4b4'.$i) ) $flag = true; } $exist = false; /* On doit trouver au moins un 2ème champ identique au champ "csc" */ foreach ($_POST as $k => $v) { if ($k!='csc'.$form_id && $v == $_POST['csc'.$form_id]) $exist = true; } if (!$exist) $flag = true; } if ($flag) { unset($_POST); die('Captcha Error...'); } return $flag; } ?>
Comme ça :
<form id="mainform" class="catpchasanscatpcha" method="post" action="merci.php"> <input type=hidden name="ok" value="1"> <input type="text" id="nom" name="nom" value="" /> <input type="text" id="prenom" name="prenom" value="" /> <input type="text" id="ville" name="ville" value="" /> <input type="submit" value="OK" /> </form>
<?php if ($_POST['ok']==1 && !csc_antispam("mainform")) { // Code ici } ?>