nog-een-captcha

Gesponsorde koppelingen

PHP script bestanden

  1. nog-een-captcha

« Lees de omschrijving en reacties

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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?php
#    Door: Pieter van Linschoten
#    Datum: 7 Maart 2007
#    E-mail: webmaster @ lapidi . nl
#    Website: http://www.lapidi.nl
#    Tevens origineel beschikbaar:  www.phphulp.nl
#    Rechten: GNU General Public Licence
#    Voorbeeld: http://www.lapidi.nl/captcha.php


session_start();

// Bepaal of script de code moet verwerken of nieuwe code aanmaken
if(!isset($_GET['action'])){

    // Initialiseer array digits.
    $digits = array();
        $digits[0] = 'A';    $digits[1] = 'B';    $digits[2] = 'C';
        $digits[3] = 'D';    $digits[4] = 'E';    $digits[5] = 'F';
        $digits[6] = 'G';    $digits[7] = 'H';    $digits[8] = 'I';
        $digits[9] = 'J';    $digits[10] = 'K';    $digits[11] = 'L';
        $digits[12] = 'M';    $digits[13] = 'N';     
        $digits[14] = 'P';    $digits[15] = 'Q';    $digits[16] = 'R';
        $digits[17] = 'S';    $digits[18] = 'T';    $digits[19] = 'U';
        $digits[20] = 'V';    $digits[21] = 'W';    $digits[22] = 'X';
        $digits[23] = 'Y';    $digits[24] = 'Z';    $digits[25] = '1';
        $digits[26] = '2';    $digits[27] = '3';    $digits[28] = '4';
        $digits[29] = '5';    $digits[30] = '6';    $digits[31] = '7';
        $digits[32] = '8';    $digits[33] = '9';
        // Om verwarring te voorkomen 0 en O niet inbegrepen.


    $iDigits = 8; // Uit hoeveel tekens moet de Captcha bestaan?

    // Initialiseren van variabelen. Strings (v) en Integers (i).
    // Ik zet er ook bij waarovor ik ze gebruik. Dit om latere verwarring te vermijden.


    $iRand = 0;        // Random integer: Bepaald welk teken in de captcha komt
    $iCount = 0;    // Forloop teller
    $vChars = NULL; // String die captcha bijhoud
    $Char = NULL;    // Enkele nummer, verandert steeds
    $vNum = NULL;    // Alle nummers uit de captcha achter elkaar
    $iNum = 0;        // Telt nummers
    $vLetter = NULL;// Alle letters uit de captcha achter elkaar
    $iLetter = 0;    // Telt letters
    $iAction = 0;    // Random integer: Bepaald welke vraag wordt gesteld
    $vAnswer = NULL;// String met antwoord op desbetreffende vraag
    $vQuestion = NULL;// String met eerste gedeelte van de vraag
    $_SESSION['sAnswer'] = NULL; // Sessievariabele met het antwoord

    // Selecteer $iDigits maal een RANDOM string en stel de antwoorden voor de mogelijke vragen samen.

    for($iCount=0;$iCount<$iDigits;$iCount++){
        $iRand = rand(0,count($digits)-1);
        $Char = $digits[$iRand];
        $vChars .= $Char;
        if(is_numeric($Char)){
            // Houdt cijfers in de captcha achter elkaar en aantal cijfers bij
            $vNum .= $Char;
            $iNum++;        
        }
else{
            // Houdt letters in de captcha achter elkaar en aantal letters bij
            $vLetter .= $Char;
            $iLetter++;
        }
    }


    // Bepaal wat voor vraag er wordt gesteld, om bots te verwarren.
    $iAction = rand(0,3);

    switch($iAction){
        case
0:
            $vQuestion = 'Hoeveel cijfers';
            $vAnswer = $iNum;
            break;
        case
1:
            $vQuestion = 'Hoevel letters ';
            $vAnswer = $iLetter;
            break;
        case
2:
            $vQuestion = 'Welke cijfers';
            $vAnswer = $vNum;
            break;
        case
3:
            $vQuestion = 'Welke letters';
            $vAnswer = $vLetter;
        break;
    }


    // Sla het antwoord op in een sessie, die afgeschermt zijn voor bots.
    $_SESSION['sAnswer'] = $vAnswer;

    // Captcha + Vraag
    echo "<p><b>" . $vChars . "</b></p>";
    echo "<p><u>" . $vQuestion . "</u> bevat het bovenstaande dikgedrukte gedeelte?</p>";
    
    // Formuliertje:
    echo "<form method=post action='". $_SERVER['PHP_SELF'] ."?action=check'>";
    echo "<input type='text' name='code'";
    echo "<input type='submit' value='Controleer'>";
    echo "</form>";
    echo "<p>N.B.: Alle tekens moeten op volgorde van links naar rechts en zijn hoofdlettergevoelig!</p>";

}
else{
    
    // Mogelijke verwerking:
    
    // Controleer of de variabele niet leeg is.

    if(empty($_SESSION['sAnswer'])){
        echo "<p><b>Helaas!</b> Er is geen geldig antwoord, aangezien er niets is gevraagd.</p>"; // Lege string > foutmelding
    
    // Kijk of het antwoord klopt.

    }elseif($_SESSION['sAnswer'] == $_POST['code']){
        echo "<p><b>Goed!</b> Je bent een mens of een HELE slimme bot!</p>"; // Goed antwoord > Hier moet dus de verwerking komen!
    
    // Indien fout antwoord.

    }else{
        echo "<p><b>Helaas!</b> Geen toegang voor BOTS en Analfabeten!</p>"; // Fout antwoord > foutmelding
    }
    
    // Altijd handig om het nogmaals te proberen :)
    echo "<p><a href='" . $_SERVER['PHP_SELF'] . "'>Vorige</a></p>";
    session_destroy();
}

?>

 
 

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.