Wiki CgX

Parce que j'ai un cerveau, mais pas trop.

Outils pour utilisateurs

Outils du site


code:js:captcha-sans-captcha

Captcha sans captcha

Attention, c'est dépendant de jQuery, évidemment !

C'est quoi ?

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.js
	$('.captchasanscaptcha').each(function() {
		var idform=$(this).attr('id');
		var number = 1 + Math.floor(Math.random() * 6);
 
		if(!$(this).attr('id')) {
			$(this).attr('id', '86c77fbe5b' + number);
		}
 
		var part1 = '86c77fbe5b';
		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());
			}
		});
	});
catpchaSansCaptcha.php
<?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])!='86c77fbe5bafd6350d3768193ceaf4b4') 
			$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]!='86c77fbe5bafd6350d3768193ceaf4b4'.$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;
	}
?>

Ca s'utilise comment ?

Comme ça :

form.html
<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>
merci.php
<?php
if ($_POST['ok']==1 && !csc_antispam("mainform"))
	{
	// Code ici
	}
?>
code/js/captcha-sans-captcha.txt · Dernière modification: 14 Sep 2021 :: 09:34 de CgX