font kann nicht gefunden werden?

freakcx

Erfahrenes Mitglied
Hallo zusammen!

Habe mir ein Captcha-Script gesucht und angepasst jetzt habe ich aber das Problem dass die Fonts irgend wie nicht geöffnet werden können!? Parser Fehler:

Warning: imagettftext(): Could not find/open font in /usr/virtualweb/host-061/html/bar.php on line 30
...

PHP:
$FONTS = '/fonts';

// leeres weißes Bild erzeugen
$image = imagecreatetruecolor(155,40);
$bgColor = ImageColorAllocate($image, 255, 255, 255);
ImageFilledRectangle($image, 0, 0, 155, 40, $bgColor);

// Schriftfarbe
$color = imagecolorallocate($image,0,0,0);

// Schriftgröße
$size=20;

// unsere Zufallszahlen, die 1 ist nicht mit dabei, wegen Verwechslungsgefahr mit der 7
$A = rand(2,9);
$B = rand(2,9);
$C = rand(2,9);
$D = rand(2,9);
$E = rand(2,9);
$F = rand(2,9);

// Zahlen auf das Bild zeichnen, Position etwas variieren, zufällig eine Schriftart auswählen (1f-7f)
imagettftext($image, $size, 0, 5,   25+rand(0,10), $color, $FONTS.'/'.rand(1,2).'DOTttf',$A);


Habe $FONTS schon mit "." probiert und mit "./fonts" hab sogar den Totalenpfad versucht jedoch bleibt der Fehler weiß mir jetzt keinen Rat mehr! habt Ihr eine Idee?
 
Zuletzt bearbeitet:
Ah hab den Fehler gefunden die Dateien hatte keine Zahl als Name ^^ aber mein Captcha funktioniert leider immer noch nicht ich poste mal das ganze Script:

bar.php:
PHP:
<?
// Verzeichnis wo die temporären Dateien abgelegt werden
$DIR='./captcha_tmp';

// Verzeichnis wo die TTF-Schriften liegen
// die müssen durchnumeriert sein, in dem Beispiel 1f - 7f
// hier aktuelles Verzeichnis
$FONTS = './fonts/'.rand(1,2).'f';
if(!file_exists($FONTS)) {
echo "Fonts konnten nicht gefunden werden!<br>Bitte &uuml;berprüfen Sie ob die Fonts den Namen einer forlaufenden Zahl tragen!";
}

// leeres weißes Bild erzeugen
$image = imagecreatetruecolor(155,40);
$bgColor = ImageColorAllocate($image, 255, 255, 255);
ImageFilledRectangle($image, 0, 0, 155, 40, $bgColor);

// Schriftfarbe
$color = imagecolorallocate($image,0,0,0);

// Schriftgröße
$size=20;

// unsere Zufallszahlen, die 1 ist nicht mit dabei, wegen Verwechslungsgefahr mit der 7
$A = rand(2,9);
$B = rand(2,9);
$C = rand(2,9);
$D = rand(2,9);
$E = rand(2,9);
$F = rand(2,9);

// Zahlen auf das Bild zeichnen, Position etwas variieren, zufällig eine Schriftart auswählen (1f-7f)
imagettftext($image, $size, 0, 5,   25+rand(0,10), $color, $FONTS, $A);
imagettftext($image, $size, 0, 30,  25+rand(0,10), $color, $FONTS, $B);
imagettftext($image, $size, 0, 55,  25+rand(0,10), $color, $FONTS, $C);
imagettftext($image, $size, 0, 80,  25+rand(0,10), $color, $FONTS, $D);
imagettftext($image, $size, 0, 105, 25+rand(0,10), $color, $FONTS, $E);
imagettftext($image, $size, 0, 130, 25+rand(0,10), $color, $FONTS, $F);

header("Content-type: image/jpeg");
imagejpeg($image,$DIR.'/'.$_GET['hash'].$A.$B.$C.$D.$E.$F,90);

// Speicher vom Bild wieder freigeben, besser ist das ;-)
imagedestroy($image);
?>

formular:
PHP:
if (!$_POST['loesung']) {

	// formular noch nicht gesendet, erzeuge Hash, schreibe den ins Formular und binde BAR (als Bild) ein, übergib BAR den Hash
	$hash = md5(uniqid (rand()));
	echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
	echo '<p><input type="hidden" name="hash" value="'.$hash.'" /></p>';
	echo '<p><img src="bar.php?hash='.$hash.'" alt="captcha" /></p>';
	echo '<p>Gib die Lösung ein:<br /><input type="text" name="loesung" size="6" /></p>';
	echo '</form>';

} else {

	// formular gesendet, prüfe ob datei existiert, wenn dann löschen und dann statusmeldung
	if (file_exists($DIR.'/'.$_POST['hash'].$_POST['loesung'])) {
		@unlink($DIR.'/'.$_POST['hash'].$_POST['loesung']);
		echo '<p>Richtig gelöst</p>';
	} else {
		echo '<p>Falsch gelöst</p>';
	}

}

Ein Hash wird erzeugt nur das Bild wird nicht angezeigt!
 
In deinem Fall müsste man den Text des Captchas tatsächlich erraten. Denn auch bei gleichbleibendem Hash-Wert wird der Captcha-Text bei jedem Aufruf neu generiert.
 
Wie auch immer das kann ich später ändern mir ist wichtig das ein Bild erzeugt wird... die Funktion kann ja erstmal fehlen...
 
Zurück