Bonjours (ou bonsoir) a tous,
j'ai fais un tuto il y a pas longtemps pour avoir un antiflood sur un de mes formulaire.
mais je ne parviens pas a bien intégrer mon formulaire ce cette antiflood du coup au moment de la validation du formulaire par l'utilisateur, que la réponse a l'antiflood soit bonne ou pas le formulaire est posté :s

si vous voulez bien m'aider, Merci beaucoup.

Voici le code de mon antiflood (sans mon formulaire ni aucunes autres retouche) :

Index.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 
<?php
require(dirname(__FILE__).DIRECTORY_SEPARATOR.'captcha.php');
 
if(isset($_POST['captchaResult']))
{
	if(checkCaptcha('captchaResult', isset($_POST['caseInsensitive'])))
		$result = '<div class="result true">Bonne r&eacute;ponse bonne... bravo... .. !</div><br />';
			else
				$result = '<div class="result false">Mauvaise r&eacute;ponse... pas de chance... il fallait r&eacute;pondre '.$_SESSION['captchaResult'].'... .. !</div><br />';
}
else $result = '';
 
$captcha = getCaptcha();
 
echo '<?xml version="1.0" encoding="ISO-8859-1"?>'."\n"; 
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" dir="ltr">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
		<meta http-equiv="content-language" content="english" />
		<title>Captcha</title>
		<style type="text/css">
	    <!--//
	    body { background-color:#F8F8F8; } 
	    input
		{
			border: #000000 1px solid; 
			margin-bottom:2px;
			vertical-align:middle;
			display: in-line;
			background-color:#ffffff;
		}
		input[type="checkbox"] { border: none; } 
		.result { margin:auto;text-align:center; }
		.true { color:#00ff00; }
		.false {  color:#ff0000; }
		//-->
		</style>
	</head>
<body>
  <div style="width:50%;margin:auto;margin-top:30px;">
	<fieldset style="text-align:center;">
		<legend>Captcha</legend>
		<br />
		<?php echo $result; ?>
		<form action="index.php?" method="post">
			<label for="captchaResult"><?php echo $captcha; ?> : </label><input type="text" name="captchaResult" size="1" />
				<br />
			<input type="checkbox" name="caseInsensitive" value="1" <?php echo isset($_POST['caseInsensitive']) ? 'checked="checked" ' : ''; ?>/> Case insensitive 
				<br />
			<input type="submit" value="Go" />
		</form>
	</fieldset>
  </div>
</body>
</html>
Captcha.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
 
<?php
function _captchaLettres()
{
    $str = 'abcdefghijklmnopqrstuvwxyz';// on crée la chaine
    $str .= strtoupper($str);
    $length = mt_rand(5,12);
    $str = substr(str_shuffle($str),0,$length);
    $pos = mt_rand(2,$length-1); // on choisi la position
 
    if(!isset($_SESSION))// on met le résultat en session puis on renvois la question
        session_start();
 
    $_SESSION['captchaResult'] = $str[$pos-1];
 
    return 'Dans <b>'.$str.'</b> quelle lettre se trouve entre <b>'.$str[$pos-2].'</b> et <b>'.$str[$pos].'</b>'; 
}
 
function _captchaCalculChiffres()
{
    $operators = array('-','+','*');
    $operator = $operators[array_rand($operators)];// on récup&egrave;re l'opérateur de calcul
 
    $nb1 = rand(1, 10);
    $nb2 = ($operator === '-') ? mt_rand(1, $nb1) : mt_rand(1, 10); // on évite les résultats négatif en cas de soustraction
 
    $calcul = $nb1.' '.$operator.' '.$nb2;
 
    if(!isset($_SESSION))// on met le résultat en session puis on renvois la question
        session_start();
 
    eval('$_SESSION[\'captchaResult\'] = strval('.$nb1.$operator.$nb2.');');
 
    return 'Combien font <b>'.$nb1.' '.($operator === '*' ? 'x' : $operator).' '.$nb2.'</b>';
}
 
function _captchaCalculLettres()
{
    $operators = array('-' => 'moins', '+' => 'plus', '*' => 'fois');
    $operator = array_rand($operators);
    $op = $operators[$operator]; // on récup&egrave;re l'opérateur de calcul
 
    $num = array(
                'zero', 'un', 'deux', 'trois',
                'quatre', 'cinq', 'six', 'sept',
                'huit', 'neuf', 'dix'
                );
 
    $nb1 = array_rand($num);
    $nb2 = array_rand($num);
 
    if($operator === '-' && $nb1 < $nb2)
        while($nb1 < ($nb2 = array_rand($num))); // on évite les résultats négatif en cas de soustraction
 
    if(!isset($_SESSION)) // on met le résultat en session puis on renvois la question
        session_start();
 
    eval('$_SESSION[\'captchaResult\'] = strval('.$nb1.$operator.$nb2.');');
 
    return 'Combien font <b>'.$num[$nb1].' '.$op.' '.$num[$nb2].'</b>';
} 
 
function _captchaAlphaNum()
{
    $str = md5(time()); // création de la chaine
    $length = mt_rand(5,12);
    $str = substr($str,0,$length);
    $pos = mt_rand(1,$length); // on choisi la position
 
    if(!isset($_SESSION))// on met le résultat en session puis on renvois la question
        session_start();
 
    $_SESSION['captchaResult'] = $str[$pos-1];
 
    if($pos === 1)
        $pos = 'le premier';
            elseif($pos === 2)
                $pos = 'le second';
                    elseif($pos === $length)
                        $pos = 'le dernier';
                            elseif($pos === ($length-1))
                                $pos = 'l\'avant dernier';
                                    else
                                        $pos = 'le '.$pos.'&egrave;me';
 
    return 'Quel est '.$pos.' caract&egrave;re dans <b>'.$str.'</b>';
}
 
 
function getCaptcha()
{
    $functions = array(
                    '_captchaLettres',  '_captchaCalculChiffres',
                    '_captchaCalculLettres', '_captchaAlphaNum'
                    );
 
    $captcha = $functions[array_rand($functions)];
    return $captcha();
}
 
 
function checkCaptcha( $postVarName = 'captchaResult', $caseInsensitive = false)
{
    if(!isset($_SESSION))
        session_start();
 
	if(!isset($_POST[$postVarName],$_SESSION['captchaResult']))
		return false;
 
	if($caseInsensitive === true && !is_numeric($_SESSION['captchaResult']))
	{
		$_POST[$postVarName] = strtolower($_POST[$postVarName]);
		$_SESSION['captchaResult'] = strtolower($_SESSION['captchaResult']);
	}
 
	return ($_POST[$postVarName] === $_SESSION['captchaResult']);
}
 
?>
Merci