Willkommen in der Webstatt Zum Webstatt Blog und Stories
phore phore am 18.06.07 21:35

hallo

offenbar können die spambots mein captcha knacken. ist nicht besonders sicher, aber ich dachte für ne kleine seite genügt es.

so siehts aus:

[IMG]http://server25.hostpoint.ch/~zeroweb/vcit/captcha/captcha.jpg[/IMG]

und das ist im prinzip der code:

imagettftext($grafik, 15, 04, 40, 28, $schriftfarbe, "fonts/blox.tff", $key);

das problem ist, wenn ich probiere die schriftart zu ändern, wird nichts mehr angezeigt.. (der pfad usw. stimmt). und wie krieg ich es hin dass zb. jeder buchstabe ein anderer font und farbe hat? habs mal so versucht:

imagettftext($grafik, 15, 04, 40, 28, $schriftfarbe, "fonts/blox.tff", $key)[0];
imagettftext($grafik, 15, 04, 40, 28, $schriftfarbe, "fonts/airstrip.tff", $key)[1];


doch das funktioniert nicht..

bitte helft mir mein captcha sicher zu machen :)

ps. hat jemand ein schönes script welches den text auf zb. übermässig viel links untersucht oder sowas?

danke für die hilfe & gruss.
- phore

netcup.de Warum gibt es hier Werbung?
Sven Sven am 18.06.07 23:20

Also, ich habe hier ein kleines Script für dich, das ein CAPTCHA mit verschiedenen Fonts und Farben erstellt. Einbindung wie gehabt, musst nur den Pfad zu den Fonts anpassen (Ich habe ca. 5 Grunge- und Grafittifonts im Ordner und komme gut weg damit):

<?php
session_start ();
$captcha_lenght = 5;
$font_size = 35;
$img_width = 316;
$img_height = 80;
$_SESSION['s_captcha'] = '';

$dir = "../fonts";
$handle = opendir ($dir);
while ($file = readdir ($handle)) {
if($file != "." && $file != "..") {
$_FONTS[] = $dir . '/' . $file;
}
}

closedir ($handle);

$_ALPHABET = array('A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'Q', 'J', 'K', 'L', 'M', 'N',
'P', 'R', 'S', 'T', 'U', 'V', 'Y',
'W', '2', '3', '4', '5', '6', '7',
'8', '9');

header ('Content-Type: image/jpeg', true);
$img = imagecreatetruecolor ($img_width, $img_height);
$col = imagecolorallocate ($img, 255, 255, 255);
imagefill ($img, 0, 0, $col);

$x = 40;

for ($i = 1; $i <= $captcha_lenght; $i++) {
$chr = $_ALPHABET [rand(0, count ($_ALPHABET) - 1)];
$_SESSION['s_captcha'] .= $chr;

$col = imagecolorallocate ($img, rand (0, 199), rand (0, 199), rand (0, 199));
$font = $_FONTS[rand(0, count($_FONTS) - 1)];

$y = 50 + rand(0, 20);
$angle = rand(0, 10);

imagettftext($img, $font_size, $angle, $x, $y, $col, $font, $chr);

$dim = imagettfbbox($font_size, $angle, $font, $chr);
$x += $dim[4] + abs($dim[6]) + 10;
}

imagejpeg ($img);
imagedestroy ($img);
?>

BNightSpeeder am 19.06.07 11:34

[Captcha Script] [Version: 1.3.0]

Kannst alles einstellen.

phore phore am 19.06.07 21:00

danke jungs für die antworten & danke dir bnight für das tolle script. funktionierte beim ersten ausprobieren und habs auch schon eingestellt.

ich hoffe das hält die kack bots nun vom gästebuch fern, danke nochmals!

gruss

phore phore am 20.06.07 18:14

hallo

ich hab doch noch ein problem mit dem captcha von dir, und zwar erscheinen manchaml nur 2 oder 3 buchstaben (ich habe 4 eingestellt):

[IMG]http://server25.hostpoint.ch/~zeroweb/vcit/captcha/captcha_problem.jpg[/IMG]
das sind 2 bespiele

ich denke vielleicht ist das weil die schriftfarbe auf weiss gestellt ist bei den buchstaben, aber ich hab gesehen dass du eine abfrage drin hast die das verhindern soll..

weisst du was das sein könnte?

danke & gruss

der_nic der_nic am 20.06.07 20:32

Ist ja auch sinnlos eine weisse Schrift zu verwenden, wenn die default-Hintergrundfarbe weiss ist:D! Nimm einfach das Weiss aus dem Farbenarray...
$color["white"] = ImageColorAllocate($img, 255, 255, 255); // <-- diese Zeile löschen

und dann musst du auch noch diese Zeile ändern:
ImageFill($img, 0, 0, $color[$background]);
Entweder hier anstatt $color[$background] gleich ImageColorAllocate(..) verwenden oder oben bei der Definition von $background die Funktion verwenden. Dann kannst du dir das ganze Überprüfen sparen...

btw:
$angel = "1"; // Buchstaben um einem bestimmtem Winkel drehen | 1 = Ja | 0 = Nein
Engel? Wohl eher angle... ;)

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt