som-captcha
Code (php)
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
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
<?
class SomCaptcha {
function maakSom() {
# de getallen en operator maken
$getallen = array("nul", "één", "twee", "drie", "vier", "vijf", "zes", "zeven", "acht", "negen");
$plusmin = array("plus", "min");
$getal1 = rand(1, 9);
$getal2 = rand(1, $getal1-1);
$plusofmin = rand(0, 1);
# de som maken
$plusmin = $plusmin[$plusofmin];
$goedantwoord = ($plusofmin == 0 ? $getal1 + $getal2 : $getal1 - $getal2);
# getallen voluit geschreven
$getal1 = $getallen[$getal1];
$getal2 = $getallen[$getal2];
# alles samen gooien in array en plaatsten in een sessie
$som = array("getal1" => $getal1, "plusofmin" => $plusmin, "getal2" => $getal2,"goedantwoord" => $goedantwoord);
$_SESSION = $som;
}
function haalAntwoord() {
return $_SESSION['goedantwoord'];
}
function schrijfSom() {
return $_SESSION['getal1'] . " " . $_SESSION['plusofmin'] . " " . $_SESSION['getal2'];
}
function checkAntwoord($invoer) {
if(empty($invoer)) return false;
if(!is_numeric($invoer)) return false;
if($invoer == $this->haalAntwoord())
return true;
else
return false;
}
}
?>
class SomCaptcha {
function maakSom() {
# de getallen en operator maken
$getallen = array("nul", "één", "twee", "drie", "vier", "vijf", "zes", "zeven", "acht", "negen");
$plusmin = array("plus", "min");
$getal1 = rand(1, 9);
$getal2 = rand(1, $getal1-1);
$plusofmin = rand(0, 1);
# de som maken
$plusmin = $plusmin[$plusofmin];
$goedantwoord = ($plusofmin == 0 ? $getal1 + $getal2 : $getal1 - $getal2);
# getallen voluit geschreven
$getal1 = $getallen[$getal1];
$getal2 = $getallen[$getal2];
# alles samen gooien in array en plaatsten in een sessie
$som = array("getal1" => $getal1, "plusofmin" => $plusmin, "getal2" => $getal2,"goedantwoord" => $goedantwoord);
$_SESSION = $som;
}
function haalAntwoord() {
return $_SESSION['goedantwoord'];
}
function schrijfSom() {
return $_SESSION['getal1'] . " " . $_SESSION['plusofmin'] . " " . $_SESSION['getal2'];
}
function checkAntwoord($invoer) {
if(empty($invoer)) return false;
if(!is_numeric($invoer)) return false;
if($invoer == $this->haalAntwoord())
return true;
else
return false;
}
}
?>
En zo kan het gebruikt worden:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
if($_SERVER['REQUEST_METHOD'] == "POST") {
echo '<p>je hebt ingevoerd: <strong>' . $_POST['antwoord'] . '</strong>, en het goede antwoord is: <strong>' . $_SESSION['goedantwoord'] . '</strong>.</p>';
echo '<p>Het antwoord dat je hebt invoed is: <strong>' . ($captcha->checkAntwoord($_POST['antwoord']) ? "GOED" : "FOUT") . '</strong></p>';
} else {
$captcha->maakSom(); #maakt de Som en gelijk de sessie
echo "<p>de uitkomst van <strong>" . $captcha->schrijfSom() . "</strong> is:</p>";
echo '
<form method="post" action="">
<input type="text" name="antwoord" />
<input type="submit" value="verstuur" /> (antwoord numeriek invoeren)
</form>';
}[/code]
?>
if($_SERVER['REQUEST_METHOD'] == "POST") {
echo '<p>je hebt ingevoerd: <strong>' . $_POST['antwoord'] . '</strong>, en het goede antwoord is: <strong>' . $_SESSION['goedantwoord'] . '</strong>.</p>';
echo '<p>Het antwoord dat je hebt invoed is: <strong>' . ($captcha->checkAntwoord($_POST['antwoord']) ? "GOED" : "FOUT") . '</strong></p>';
} else {
$captcha->maakSom(); #maakt de Som en gelijk de sessie
echo "<p>de uitkomst van <strong>" . $captcha->schrijfSom() . "</strong> is:</p>";
echo '
<form method="post" action="">
<input type="text" name="antwoord" />
<input type="submit" value="verstuur" /> (antwoord numeriek invoeren)
</form>';
}[/code]
?>