Webstatt.org - Community seit 2006 - 2012 (2024?)

Captcha unsicher..

Avatar user-279
18.06.2007 19: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:



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 lächeln

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.
- user-279

Avatar user-317
18.06.2007 21: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 != ".."zwinkern {
$_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'zwinkern;

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);
?>

user-137
19.06.2007 09:34

[Captcha Script] [Version: 1.3.0]

Kannst alles einstellen.

Avatar user-279
19.06.2007 19: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

Avatar user-279
20.06.2007 16: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):


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

Avatar user-162
20.06.2007 18:32

Ist ja auch sinnlos eine weisse Schrift zu verwenden, wenn die default-Hintergrundfarbe weiss istFettes Grinsen! 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. user-158n 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... zwinkern

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine