simpele-zwart-wit-captcha
Gesponsorde koppelingen
PHP script bestanden
captcha.php
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
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
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
<?
// We willen graag alle fouten / notices zien
ini_set('display_errors', 1);
error_reporting(E_ALL);
// We laten het script weten dat we met sessies gaan werken
session_start();
// We laten het script weten dat we een plaatje gaan maken
header('Content-type: image/png');
// We defineren een aantal variabelen
$aantal_karakters = 4;
$lijnen = 6;
$fonts =
array(
'times.ttf',
'tahoma.ttf',
'verdana.ttf'
);
// We gaan een captcha maken met enkel getallen
$karakters = range(1, 9);
// We maken een lege variabele aan waar we de code in gaan zetten straks
$captcha_code = NULL;
// We maken een for loop om een random 4 cijferige code te maken
for($random_code = 0; $random_code < $aantal_karakters; $random_code++)
{
// we pakken random getallen uit de array $karakters, we halen er 1 vanaf aangezien een array begint bij 0;
$random = mt_rand(0, count($karakters) -1);
// we stoppen de gegenereerde code in de variabele $captcha_code
$captcha_code .= $karakters[$random];
}
// we zetten een sessie met de code en encrypten die met sha1();
$_SESSION['captcha_code'] = sha1($captcha_code);
// we geven de breedte van de afbeelding op
$breedte = $aantal_karakters * 20;
// we geven de lengte van de lijnen op
$lijn_lengte = $breedte;
// we maken het plaatje aan
$image = imagecreatetruecolor($breedte, 45);
// we maken een for loop for de random lijnen
for($i = 0; $i < $lijnen; $i++)
{
// alle lijnen maken we wit
$kleur = imagecolorallocate($image, 255, 255, 255);
imageline($image, mt_rand(2, $lijn_lengte), 1, mt_rand(2, $lijn_lengte), 44, $kleur);
}
// we maken een for loop voor de letters
for($i = 0; $i < $aantal_karakters; $i++)
{
// we geven alle we maken alle letters wit
$kleur = imagecolorallocate($image, 255, 255, 255);
// we zetten de letters op de juiste plaats
$plaats = $i * 16 + 6;
imagettftext($image,
19,
mt_rand(-20,20), //willekeurige rotatie
$plaats, //plaats horizontaal
mt_rand(20,40), //random plaats verticaal
$kleur, //willekeurige kleur
$fonts[array_rand($fonts)], //willekeurig lettertype
$captcha_code[$i]); //met de letter
}
imagepng($image);
imagedestroy($image);
?>
// We willen graag alle fouten / notices zien
ini_set('display_errors', 1);
error_reporting(E_ALL);
// We laten het script weten dat we met sessies gaan werken
session_start();
// We laten het script weten dat we een plaatje gaan maken
header('Content-type: image/png');
// We defineren een aantal variabelen
$aantal_karakters = 4;
$lijnen = 6;
$fonts =
array(
'times.ttf',
'tahoma.ttf',
'verdana.ttf'
);
// We gaan een captcha maken met enkel getallen
$karakters = range(1, 9);
// We maken een lege variabele aan waar we de code in gaan zetten straks
$captcha_code = NULL;
// We maken een for loop om een random 4 cijferige code te maken
for($random_code = 0; $random_code < $aantal_karakters; $random_code++)
{
// we pakken random getallen uit de array $karakters, we halen er 1 vanaf aangezien een array begint bij 0;
$random = mt_rand(0, count($karakters) -1);
// we stoppen de gegenereerde code in de variabele $captcha_code
$captcha_code .= $karakters[$random];
}
// we zetten een sessie met de code en encrypten die met sha1();
$_SESSION['captcha_code'] = sha1($captcha_code);
// we geven de breedte van de afbeelding op
$breedte = $aantal_karakters * 20;
// we geven de lengte van de lijnen op
$lijn_lengte = $breedte;
// we maken het plaatje aan
$image = imagecreatetruecolor($breedte, 45);
// we maken een for loop for de random lijnen
for($i = 0; $i < $lijnen; $i++)
{
// alle lijnen maken we wit
$kleur = imagecolorallocate($image, 255, 255, 255);
imageline($image, mt_rand(2, $lijn_lengte), 1, mt_rand(2, $lijn_lengte), 44, $kleur);
}
// we maken een for loop voor de letters
for($i = 0; $i < $aantal_karakters; $i++)
{
// we geven alle we maken alle letters wit
$kleur = imagecolorallocate($image, 255, 255, 255);
// we zetten de letters op de juiste plaats
$plaats = $i * 16 + 6;
imagettftext($image,
19,
mt_rand(-20,20), //willekeurige rotatie
$plaats, //plaats horizontaal
mt_rand(20,40), //random plaats verticaal
$kleur, //willekeurige kleur
$fonts[array_rand($fonts)], //willekeurig lettertype
$captcha_code[$i]); //met de letter
}
imagepng($image);
imagedestroy($image);
?>
index.php
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
43
44
45
46
47
48
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
<?
// We willen op de hoogte gehouden worden van alle errors / notices
ini_set('display_errors', 1);
error_reporting(E_ALL);
// we gaan met sessies werken
session_start();
?>
<html>
<head>
<title></title>
</head>
<body>
<?
// controlen of het formulier gesubmit is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(!empty($_POST['captcha_code']) && sha1($_POST['captcha_code']) == $_SESSION['captcha_code'])
{
echo 'De code is correct, Gefeliciteerd!';
}
else {
echo 'De ingevoerde code is niet juist, Flauwerd!';
}
}
else {
echo '
<form method="post" action="'.$_SERVER['PHP_SELF'].'">
<p>
<img src="captcha.php" />
</p>
<p>
Neem de code precies zo over zoals aangegeven hierboven.<br />
<label for="captcha_code">Code:</label>
<input type="text" name="captcha_code">
</p>
<p>
<input type="submit" name="submit" value="Controleer">
</p>
</form>
';
}
?>
</body>
</html>
// We willen op de hoogte gehouden worden van alle errors / notices
ini_set('display_errors', 1);
error_reporting(E_ALL);
// we gaan met sessies werken
session_start();
?>
<html>
<head>
<title></title>
</head>
<body>
<?
// controlen of het formulier gesubmit is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(!empty($_POST['captcha_code']) && sha1($_POST['captcha_code']) == $_SESSION['captcha_code'])
{
echo 'De code is correct, Gefeliciteerd!';
}
else {
echo 'De ingevoerde code is niet juist, Flauwerd!';
}
}
else {
echo '
<form method="post" action="'.$_SERVER['PHP_SELF'].'">
<p>
<img src="captcha.php" />
</p>
<p>
Neem de code precies zo over zoals aangegeven hierboven.<br />
<label for="captcha_code">Code:</label>
<input type="text" name="captcha_code">
</p>
<p>
<input type="submit" name="submit" value="Controleer">
</p>
</form>
';
}
?>
</body>
</html>