simpele-zwart-wit-captcha

Gesponsorde koppelingen

PHP script bestanden

  1. simpele-zwart-wit-captcha

« Lees de omschrijving en reacties

captcha.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?

// 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)
PHP script in nieuw venster Selecteer het PHP script
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
<?
// 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>

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.