Start > Zonder rubriek > Mijn Captcha

Mijn Captcha

17 April 2008

Ben me weer eens wat meer in de wereld van PHP aan het verdiepen, en heb een captcha gemaakt. Hij is ook best veilig, want tot nu toe is het een vriend van mij (www.thomsenwebdesign.nl) niet gelukt om het te kraken! Dit script gebruikt de GD library en tekent daarmee een variabele achtergrondkleur met daaroverheen een variabele tekst met variabele tekstkleur, met daar weer variabele lijntjes die variabele kleuren hebben erover! Erg variabel dus.

  1. <?php
  2.  
  3. /**
  4. * JaapzCaptcha
  5. * Een simpele captcha gemaakt door:
  6. * Jaap Broekhuizen aka Jaapz
  7. * Site: www.jaapz.nl
  8. * Vrijgegeven onder de GNU GPL2 licentie
  9. */
  10.  
  11. //verander hieronder wat je nodig vind
  12. $codelengte = 6; //aantal karakters in de code
  13. $aantallijntjes = 7; //aantal lijnen in het plaatje
  14. $font = "uwfont.ttf"; //font te gebruiken, bijv $font = "uwfont.ttf";
  15.  
  16. //sessie starten en meegeven dat het een plaatje is
  17. header("content-type: image/png");
  18.  
  19. //code genereren
  20. $tekens = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  21. $aantaltekens = strlen($tekens);
  22. for ($i=0; $i<=$codelengte; $i++) {
  23. $hoeveelste = rand(0, $aantaltekens);
  24. $code .= substr($tekens, $hoeveelste, 1);
  25. }
  26.  
  27. //code in een sessie zetten
  28. $_SESSION["captchacode"] = $code;
  29.  
  30. //plaatje maken
  31. $plaatje = imagecreate("100", "50");
  32.  
  33. //achtergrondkleur genereren
  34. $br = rand(0,255); //red
  35. $bg = rand(0,255); //green
  36. $bb = rand(0,255); //blue
  37.  
  38. $achter = imagecolorallocate($plaatje, $br, $bg, $bb);
  39.  
  40. //code erop gooien
  41. $cr = rand(0,255); //red
  42. $cg = rand(0,255); //green
  43. $cb = rand(0,255); //blue
  44. $kleur = imagecolorallocate($plaatje, $cr, $cg, $cb);
  45.  
  46. imageTTFtext($plaatje, 20, 0, rand(0,10), rand(20,50), $kleur, $font, $code);
  47.  
  48. //lijntjes tekenen
  49. for ($i2=0; $i2<=$aantallijntjes; $i2++) {
  50. $lr = rand(0,255); //red
  51. $lg = rand(0,255); //green
  52. $lb = rand(0,255); //blue
  53. $kleur = imagecolorallocate($plaatje, $lr, $lg, $lb);
  54.  
  55. $lx1 = rand(0,100);
  56. $ly1 = rand(0,50);
  57. $lx2 = rand(0,100);
  58. $ly2 = rand(0,50);
  59. imageline($plaatje, $lx1, $ly1, $lx2, $ly2, $kleur);
  60. }
  61.  
  62. //plaatje teruggeven
  63. imagepng($plaatje);
  64. imagedestroy($plaatje);
  65.  
  66. ?>

Jaapz Zonder rubriek ,

  1. Nog geen reacties.
  1. Nog geen trackbacks.