CAPTCHA met plaatjes

Door Erik-Jan op 4 september 2007

Trefwoorden: .

Op PHPClasses kom ik een leuke class tegen: icaptcha. icaptcha is een PHP class waarmee je CAPTCHA’s op je site kan knallen. Daar zijn uiteraard meer classes van, maar aan onderstaand plaatje is duidelijk te zien wat er bijzonder is aan deze CAPTCHA.

teeth CAPTCHA met plaatjes

De CAPTCHA vraagt je in dit geval niet een code over te typen, ook vraagt het niet de uitkomst van een rekensommetje in te vullen – Nee, de CAPTCHA heeft er behoefte aan dat jij de juiste kleur selecteert. Nu kan bij deze vraag de verwarring zich nog afspelen tussen wit en geel, maar in het algemeen zijn de antwoorden duidelijk. Je kan een paar CAPTCHA’s testen op de site van de maker.

Wat een onzin zeg…


Je kunt een reactie, achterlaten of een trackback van uw eigen site.

9 Reacties op “CAPTCHA met plaatjes”

  1. Arjan

    Best grappig bedacht, maar niet echthandig voor mensen die kleurenblind zijn en/of aangepaste kleuren/contrast instellingen hebben.

    Reageer
  2. Wouter

    Een kans van 1/6 dat een willekeurige form-request wordt goedgekeurd lijkt me niet echt wenselijk. Niet echt een heel bruikbaar systeem dus.

    Reageer
  3. Robert

    ik wilde het zelf ook maar eens maken hier mijn lelijk gecodeerde hersenspinsel :P

    voorbeeldje : klik


    < ?

    ## captcha
    $text = 3; // 0 = text invoer 1 = pulldown 2 = radio buttons 3 = random

    if($text == 3){
    $text = rand(0,2);
    }

    function valid_captcha($a,$post){
    if($a == 1){
    if($post == 'red'){ return TRUE; $correct = 1; }
    if($post == 'RED'){ return TRUE; $correct = 1; }
    if($post == 'Red'){ return TRUE; $correct = 1; }
    if($post == 'Rood'){ return TRUE; $correct = 1; }
    if($post == 'rood'){ return TRUE; $correct = 1; }
    }elseif($a == 2){
    if($post == 'green'){ return TRUE; $correct = 1; }
    if($post == 'GREEN'){ return TRUE; $correct = 1; }
    if($post == 'Green'){ return TRUE; $correct = 1; }
    if($post == 'Groen'){ return TRUE; $correct = 1; }
    if($post == 'groen'){ return TRUE; $correct = 1; }
    }elseif($a == 3){
    if($post == 'blue'){ return TRUE; $correct = 1; }
    if($post == 'BLUE'){ return TRUE; $correct = 1; }
    if($post == 'Blue'){ return TRUE; $correct = 1; }
    if($post == 'Blauw'){ return TRUE; $correct = 1; }
    if($post == 'blauw'){ return TRUE; $correct = 1; }
    }elseif($a == 4){
    if($post == 'yellow'){ return TRUE; $correct = 1; }
    if($post == 'YELLOW'){ return TRUE; $correct = 1; }
    if($post == 'Yellow'){ return TRUE; $correct = 1; }
    if($post == 'geel'){ return TRUE; $correct = 1; }
    if($post == 'Geel'){ return TRUE; $correct = 1; }
    }

    if($correct != 1){
    return FALSE;
    }
    }

    if($_POST['captcha'] != ''){

    if(valid_captcha($_POST['a'],$_POST['captcha'])){

    echo "correcte captcha!!";

    }else{

    echo "foutieve captcha!!";

    }
    }else{

    $a = rand(1,4);
    $b = rand(1,4);

    if($a == 1){
    $color = "#FF0000"; // red
    }elseif($a == 2){
    $color = "#009900"; // green
    }elseif($a == 3){
    $color = "#0099FF"; // blue
    }elseif($a == 4){
    $color = "#FFCC00"; // yellow
    }
    if($b == 1){
    $word = "RED";
    }elseif($b == 2){
    $word = "GREEN";
    }elseif($b == 3){
    $word = "BLUE";
    }elseif($b == 4){
    $word = "YELLOW";
    }

    // form
    echo '

    What is the color of this word : '. $word .'

    ';

    if($text == 0){
    echo '
    ';
    }elseif($text == 1){
    echo '

    ';
    }elseif($text == 2){
    echo '

    Red

    Green

    Blue

    Yellow
    ';
    }
    echo'

    ';
    }
    ?>

    Reageer
  4. FerRory

    Deze captcha is wel heel makkelijk te hacken he. Gewoon eerst lezen welke woord tussen strong staat en dan de daar bijhorende value pakken.

    Reageer
  5. Robert

    hij is niet waterdicht maar als mensen daar bots voor gaan maken verzin ik wel iets nieuws ;) suggesties zijn welkom hoor

    begrijp jij hem trouwens wel je moet de achtergrond kleur invullen he ;)

    Reageer
  6. Erik-Jan

    Ooit gehoord van de functies strtolower() en strotoupper()? ;-)

    Reageer
  7. Robert

    @ Erik-Jan : zo beter ? Was ff snel op het werk gemaakt vandaar. er kunnen nog heel wat verbeteringen in hoor.

    < ?

    ## captcha
    $text = 3; // 0 = text invoer 1 = pulldown 2 = radio buttons 3 = random

    if($text == 3){
    $text = rand(0,2);
    }

    function valid_captcha($a,$post){

    $post = strtolower ($post);

    if($a == 1){
    if($post == 'red'){ return TRUE; $correct = 1; }
    if($post == 'rood'){ return TRUE; $correct = 1; }
    }elseif($a == 2){
    if($post == 'green'){ return TRUE; $correct = 1; }
    if($post == 'groen'){ return TRUE; $correct = 1; }
    }elseif($a == 3){
    if($post == 'blue'){ return TRUE; $correct = 1; }
    if($post == 'blauw'){ return TRUE; $correct = 1; }
    }elseif($a == 4){
    if($post == 'yellow'){ return TRUE; $correct = 1; }
    if($post == 'geel'){ return TRUE; $correct = 1; }
    }
    if($correct != 1){
    return FALSE;
    }
    }

    if($_POST['captcha'] != ''){

    if(valid_captcha($_POST['a'],$_POST['captcha'])){

    echo "correcte captcha!!";

    }else{

    echo "foutieve captcha!!";

    }
    }else{

    $a = rand(1,4);
    $b = rand(1,4);

    if($a == 1){
    $color = "#FF0000"; // red
    }elseif($a == 2){
    $color = "#009900"; // green
    }elseif($a == 3){
    $color = "#0099FF"; // blue
    }elseif($a == 4){
    $color = "#FFCC00"; // yellow
    }
    if($b == 1){
    $word = "RED";
    }elseif($b == 2){
    $word = "GREEN";
    }elseif($b == 3){
    $word = "BLUE";
    }elseif($b == 4){
    $word = "YELLOW";
    }

    // form
    echo '
    What is the color of this word : '. $word .'

    ';

    if($text == 0){
    echo '
    ';
    }elseif($text == 1){
    echo '

    ';
    }elseif($text == 2){
    echo '

    Red

    Green

    Blue

    Yellow
    ';
    }
    echo'

    ';
    }
    ?>

    Reageer
  8. FerRory

    Ik zie het nu ja. Al is dat nog niet heel veilig. Gewoon geen kleur vragen maar een iets noemen wat een kleur is. Bijvoorbeeeld. Welke kleur heeft gras?

    Reageer
  9. Arjan

    check ook eens dit artikel en vooral de links die erin staan.

    PS: leuk trouwens om hem te testen als je er mee bezig bent :-)

    Reageer

Reageer!