captcha

Gesponsorde koppelingen

PHP script bestanden

  1. captcha

« Lees de omschrijving en reacties

de pagina waarop je de captcha wil hebben

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
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
<?php
session_start(); //even zorgen dat we met sessies kunnen gaan werken
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>

<html>
<head>
<script language="javascript" type="text/javascript">
    function nieuw()
    {
        document.getElementById('captcha').innerHTML = '<img src="afbeelding.php?' + Math.floor(Math.random()* 999999 + 1 ) + '" height="45px" width="108px" />';
    }
</script>
</head>
<body>
<div id="lipsum">
  <p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In mi enim,  consectetuer a, imperdiet vitae, pulvinar a, sapien. Quisque urna  purus, ornare sed, iaculis ut, iaculis id, erat. Vivamus laoreet velit  sit amet urna. Etiam porta. Cum sociis natoque penatibus et magnis dis  parturient montes, nascetur ridiculus mus. Vestibulum accumsan  tincidunt turpis. Ut lobortis nisi eget erat. Integer tincidunt. Donec  id dolor ac leo ultrices molestie. Aenean ligula. Fusce pretium, orci  quis ultricies dictum, velit velit tempus mi, sed porttitor lacus dolor  in mauris. Aliquam sed pede. Aenean neque. Nam iaculis posuere nisl. Ut  non nibh a mauris congue faucibus. Quisque quis urna vitae sem tempus  scelerisque. Mauris orci neque, malesuada nec, interdum ac, mattis ut,  tortor. Proin ullamcorper. Maecenas mi. </p>
  <p>Nunc at velit sed mauris rhoncus cursus. Ut id lorem. Pellentesque  sem. Phasellus eu massa eu mi semper scelerisque. Morbi posuere  tincidunt sapien. Mauris dolor mauris, pretium sed, venenatis nec,  rutrum non, erat. Nullam pellentesque tellus nec quam. Mauris metus  justo, elementum eu, ornare quis, blandit eu, nulla. Proin aliquam  sodales quam. Sed condimentum diam nec nisi. Vestibulum ante ipsum  primis in faucibus orci luctus et ultrices posuere cubilia Curae;  Aliquam in elit quis enim eleifend porttitor. Fusce in augue nec massa  vulputate aliquet. Morbi et sem. Aliquam sodales eleifend sem. Quisque  eleifend. Maecenas mollis. Class aptent taciti sociosqu ad litora  torquent per conubia nostra, per inceptos hymenaeos. Etiam tempor quam  at tellus. Etiam quis risus. </p>
</div>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') //als er gepost is
{
    /*
        Hier kun je afhandeling zetten die ook moet gebeuren als de code niet goed is.
        Hier kun je dus bijvoorbeeld je formulier in een sessie zetten zodat alles wordt onthouden
        
        Zelf zet hier de geposte naam in een sessie.
        
        TIP -- TIP -- TIP
        
        Zet hier geen POST to SESSION foreach neer!
    */

    
    if(!isset($_SESSION['naam']))
    {

        $_SESSION['naam'] = $_POST['naam'];
    }

        
    if(!empty($_POST['cap']) && md5($_POST['cap']) == $_SESSION['string']) //als de geposte code niet leeg is, en gelijk is aan de md5 van de sessie
    {
        /*
            hier kun je je eigen formulier afhandeling zetten,
            ik doe nu de afhandeling van de naam, maar deze kun je uiteraard verwijderen
            en voor in de plaats zetten wat je zelf wilt
        */

        
        if(isset($_SESSION['naam'])) //als de sessie naam is geset
        {
            echo 'Je naam is: '.$_SESSION['naam']; //echo de naam
            unset($_SESSION); //en unset de sessie
        }
        else //als de sessie niet is geset
        {
            echo 'Je naam is: '.$_POST['naam']; //echo de geposte naam
            unset($_SESSION);  //en unset de sessie
        }
    }

    else //als de code verkeerd is
    {        
        echo 'verkeerde code<br /><br />';
        echo '<form action="#" method="post"><label>
                <span id="captcha">
                    <img src="afbeelding.php" height="45px" width="108px" />
                </span>
                
                &nbsp;&nbsp;&nbsp;
                
                <input type="text" size="10" maxlength="10" name="cap" />
            </label>
            <br />
            <br />
            
            <input type="submit" value="Voer uit!" />
        </form>
        <br />
        <a onclick="javascript: nieuw()" style="cursor: pointer; text-decoration: underline;">nieuwe afbeelding</a>
        '
; //echo dat het formulier verkeerd is en geef een nieuwe code
    }
}

else //als er niet gesubmit is
{
    //geef dan het gewone formulier
    ?>

    <form action="#" method="post">
        <label>Naam: <input type="text" name="naam" /></label><br />
        <br />
        <label>
            <span id="captcha">
                <img src="afbeelding.php" height="45" width="108" />        </span>
            
            &nbsp;&nbsp;&nbsp;
            
            <input type="text" size="10" maxlength="10" name="cap" />
      </label>
        <br />
        <br />
        
        <input type="submit" value="Voer uit!" />
    </form>
    <br />
    <a onClick="javascript: nieuw()" style="cursor: pointer; text-decoration: underline;">nieuwe afbeelding</a>
    <?php
}
?>

</body>
</html>


afbeelding.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
<?php
error_reporting(E_ALL); //error reporting op all
session_start(); //zorgen dat we met sessies kunnen werken
header("Content-type: image/png");

$hoofdletters = FALSE; //hoofdletters of niet TRUE voor ja, FALSE voor nee
$aantal = 6; //aantal karakters
$fonts = array('poorrichard.ttf','tccm.ttf','times.ttf'); //een array met lettertypes, deze kun je zelf vullen
$vert = 10; //aantal verticale lijnen

if($hoofdletters != FALSE) //als je wel hoofdletters wil
{
    $chars = array_merge(range('a', 'z'), range('A', 'Z'), range(1, 9), range(1, 9)); //maak een array cijfers aan met hoofdletters
}
else //geen hoofdletters?
{
    $chars = array_merge(range('a', 'z'), range(1, 9), range(1, 9)); //dan een array zonder hoofdletters
}

$verify_string = NULL; //verfy string wordt zometeen gevuld, en maken we hier dus aan met waarde NULL

for ($rand = 0; $rand < $aantal; $rand++) //een for loopje welke herhaalt voor het aantal karakters
{
    $random = rand(0, count($chars) -1); //een pak een willekeurige karakter uit de array
    $verify_string .= $chars[$random]; //en voeg deze toe aan de string verfy string
}

$afbsize = $aantal * 18; //de breedte van de afbeelding is het aantal karakters * 18
$strsize = $afbsize - 1; //en de streep lengte is de abeeldings lengte -1

$_SESSION['string'] = md5($verify_string); //de sessie met de code is een md5 van de code

$img = imagecreate($afbsize, 45);

$white = imagecolorallocate($img, 255, 255, 255); //maak even het kleurtje wit aan
$black = imagecolorallocate($img, 0, 0, 0); //en zwart
$grey = imagecolorallocate($img, 81, 81, 81); //en grijs

imagefill($img, 0, 0, $white); //geef de afbeelding een witte achtergrond
imageline($img, 0, 0, 0, 44, $black); //een zwart lijntje links
imageline($img, 0, 0, $strsize, 0, $black); //een zwart lijntje boven
imageline($img, $strsize, 0, $strsize, 45, $black); //een zwart lijntje rechts
imageline($img, 0, 44, $strsize, 44, $black); //en een zwart lijntje onder

for($i = 0; $i < $vert; $i++) //een for loopje voor verticale lijnen
{
    $wil = imagecolorallocate($img, rand(0,255), rand(0,255), rand(0,255)); //creeer een willekeurige kleur
    
    imageline($img, rand(2, $strsize), 1, rand(2, $strsize), 44, $wil); //en een willekeurig lijntje met die willekeurige kleur
}

for ($i = 0; $i < $aantal; $i++) //en ook eentje voor de letters
{
    $wil = imagecolorallocate($img, rand(40,255), rand(40,255), rand(40,255)); //creeer wederom een willekeurige kleur

    $plaats = $i * 16 + 6; //zet de letter even op de goede plaats
    imagettftext($img,
                19,
                rand(-20,20), //willekeurige rotatie
                $plaats, //plaats horizontaal
                rand(20,40), //random plaats verticaal
                $wil, //willekeurige kleur
                $fonts[array_rand($fonts)], //willekeurig lettertype
                $verify_string[$i]); //met de letter
}

$wil = imagecolorallocate($img, rand(0,245), rand(0,245), rand(0,245)); //random kleur

imageline($img, 1, rand(2, 16), $strsize, rand(2, 16), $wil); //lijntje op het bovenste deel van de afbeelding

$wil = imagecolorallocate($img, rand(0,245), rand(0,245), rand(0,245)); //en nog een random kleur

imageline($img, 1, rand(17, 33), $strsize, rand(17, 33), $wil); //en nog een lijntje op het onderste deel

imagepng($img); //creeer afbeelding
imagedestroy($img); //verwijder afbeelding
?>

 
 

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.