Captcha – einfacher Spamschutz

Spambots von Usern unterscheiden

Captchas sollen im Internet sicherstellen, dass nur Menschen und keine programmierten Bots bestimmte Dienste nutzen können. Die Herausforderungen: einerseits schwere Aufgaben in den CAPTCHAs zu stellen, andererseits solche Aufgaben lösen zu können.

Captcha Variante 1

Grafischer Text auf Hintergrund

Folgende Bestandteile werden benötigt:
captcha.php - Script
captcha.png - Hintergrundgrafik
captcha.gdf - Schrift im gdf-Format

captcha.php – Code:
01: <?php 02: session_start(); 03: unset($_SESSION['captcha_spam']); 04: 05: function rndStr($len) { 06: function mk_seed(){ 07: list($usec , $sec) = explode (' ', microtime()); 08: return (float) $sec + ((float) $usec * 100000); 09: } 10: srand(mk_seed()); 11: 12: //$characters enthält die Zeichen, die verwendet werden sollen 13: $characters="ABCDEFGHJKLMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789"; 14: $str=""; 15: while(strlen($str)<$len) { 16: $str.=substr($characters,(rand()%(strlen($characters))),1); 17: } 18: return($str); 19: } 20: 21: $text = rndStr(5); //Die in Klammern stehende Zahl bestimmt die Anzahl der ausgegeben Buchstaben 22: $_SESSION['captcha_spam'] = $text; 23: 24: header('Content-type: image/png'); 25: $img = ImageCreateFromPNG('captcha.png'); //Hintergrundbild 26: $width=10; 27: for ($i = 0; $i <= strlen($text); $i++) 28: { 29: $textcolor = imagecolorallocate($img,91,86,66); 30: $font = imageloadfont('captcha.gdf'); 31: $font_w = imagefontwidth($font); 32: $top_px = 8; 33: imagechar($img, $font, $width, $top_px, $text[$i], $textcolor); 34: $width = $width + $font_w; 35: 36: } 37: imagepng($img); 38: imagedestroy($img); 39: ?>

Captcha-Script - inklusive gdf-Font, Hintergrundgrafik
Anleitung zum Captcha-Script