by Herbert Koglin » 06. March 2021 16:56
zu meinem Captcha-Darstellungsproblem:
Mit Apache / 2.4.25 (WIN 32) mit PHP 7.1.1 werden Hintergrundbild und Captcha-Code richtig angezeigt.
Mit Apache 7 2.4.46 (WIN 64) und PHP 8.0.2 wird das Hintergrundbild nicht angezeigt. Wenn ich es im Browser direkt aufrufe (http://localhost/.../captcha/captcha.png) wird mir ein kleines weißes Quadrat angezeigt.
Das ist dann wohl eher ein XAMPP-Konfigurationsproblem. In welcher .ini / .conf-datei muss welcher Eintrag vorhanden sein?
Bei meiner Internetseite wird das Hintergrundbild mit PHP 8 angezeigt, aber der Captcha-Code nicht.
Wurde bei PHP etwas geändert?
Mein Captcha-PHP-Code:
// Session starten (auch wenn vorher schon mal vorhanden)
session_start();
// Leeren des Wertes in der Session
unset($_SESSION['captcha_spam']);
$captchacode = randomString(5); //Die Zahl bestimmt die Anzahl der Zeichen
$_SESSION['captcha_spam'] = $captchacode;
// Dem Browser vormachen, das Dokument wäre eine .gif-Datei (Bildtyp)
header('Content-type: image/gif');
// Ein Bild aus einem vorhandenem Bild erstellen
$img = imagecreatefromgif('captcha.gif'); //Backgroundimage
// Festlegen einer Farbe für die Schrift (mit Zufallswerten)
//$color = ImageColorAllocate($img, rand(0, 55), rand(0, 55), rand(0, 55)); //Farbe
$color = ImageColorAllocate($img, 0, 0, 0); //Farbe
// Bestimmen der Schriftart relativ zum Dokumentroot
$ttf = 'XFILES.TTF'; //Schriftart
$ttfsize = 25; //Schriftgrösse
// Winkel der Schrift (Zufallswert)
$angle = rand(0,5);
// Horizontale Position (Zufallswert)
$t_x = rand(5,30);
// Vertikale Position (Schriftgröße + Abstand zum Rand)
$t_y = 35;
// Belegen des Hintergrundbildes mit dem Code
imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $captchacode);
// Ausgabe des fertigen Bildes
imagegif($img);
// Löschen des Bildes aus dem Zwischenspeicher
imagedestroy($img);