// // php modul gd ist dafuer notwendig // --------------------------------- $_SESSIONNAME = 'captcha'; // Sessionname $font = './fnt/captcha.ttf'; // TTF Schriftart für Captcha //$image = imagecreate(150, 400); // Bild erstellen mit 150 Pixel Breite und 30 Pixel Höhe //imagecolorallocate($image, 255, 255, 255); // Bild weis färben, RGB $imgname='./img/captcha-clock.png'; $image = ImageCreateFromPNG($imgname); //Backgroundimage //print "

".$imgname." ".$font."

"; if(!$image) { /* Create a blank image */ $image = imagecreatetruecolor(150, 30); $bgc = imagecolorallocate($image, 200, 255, 255); $tc = imagecolorallocate($image, 0, 0, 0); imagefilledrectangle($image, 0, 0, 150, 30, $bgc); /* Output an error message */ imagestring($image, 1, 5, 5, 'Error loading ' . $imgname, $tc); } $left = 5; // Initialwert, von links 5 Pixel $signs = 'aAbBcCdDeEfFgGhHjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ023456789#?'; // Alle Buchstaben und Zahlen $string = ''; // Der später per Zufall generierte Code for($i = 1;$i <= 5;$i++) // 5 Zeichen { $sign = $signs{rand(0, strlen($signs) - 1)}; /* Zufälliges Zeichen aus den oben aufgelisteten strlen($signs) = Zählen aller Zeichen rand = Zufällig zwischen 0 und der Länge der Zeichen - 1 Grund für diese Rechnung: Mit den Geschweiften Klammern kann man auf ein Zeichen zugreifen allerdings fängt man dort genauso wie im Array mit 0 an zu zählen */ // Das Zeichen an den gesamten Code anhängen $string .= $sign; // Das gerade herausgesuchte Zeichen dem Bild hinzufügen /* imagettftext($image, 20, rand(-10, 10), $left + (($i == 1?15:15) * $i), 25, imagecolorallocate($image, 200, 200, 200), $font, $sign); // Das Zeichen noch einmal hinzufügen, damit es für einen Bot nicht zu leicht lesbar ist imagettftext($image, 16, rand(-15, 15), $left + (($i == 1?15:15) * $i), 25, imagecolorallocate($image, 69, 103, 137), $font, $sign); */ } $farbe_b = ImageColorAllocate ($image, 0, 0, 0); ImageTTFText ($image, 32, -30, 140, 70, $farbe_b, $font, $string[0]); ImageTTFText ($image, 32, -90, 180, 130, $farbe_b, $font, $string[1]); ImageTTFText ($image, 32, 0, 130, 210, $farbe_b, $font, $string[2]); ImageTTFText ($image, 32, 45, 80, 190, $farbe_b, $font, $string[3]); ImageTTFText ($image, 32, 99, 80, 120, $farbe_b, $font, $string[4]); $_SESSION[$_SESSIONNAME] = $string; // Den Code in die Session mit dem Sessionname speichern für die Überprüfung header("Content-type: image/png"); // Header für ein PNG Bild setzen imagepng($image); // Ausgaben des Bildes imagedestroy($image); // Bild zerstören ?>