Hallo zusammen,
ich bin neu im Forum, deswegen erstmal ein Hallo an alle
!
Zu meinem Problem:
Ich habe ein Captcha im PHP gebaut, das einen Zufallsstring in ein Bild schreibt. Das geschieht in der bildgenerierung.php . In selbiger Datei wird der Zufallstr. in die $_SESSION['captcha'] geschrieben.
Code:
Das Bild binde ich mittels "img src=..." in ein Formular ein (Formlob.php).
Wenn ich im Formular die Session['captcha'] ausgeben lasse (also aufrufen und immer wieder F5), dann hängt die Ausgabe immer hinterher.
Also wenn der Zufallstr. beim 1. Aufruf "1234" lautet und beim 2. 2345, dann steht in dem Bild "2345" und in der Ausgabe der Session "1234".
Damit ist der Vergleich zwischen Usereingabe und dem Bildcode auch irgendwie fürn Eimer -.-!
Und ich verstehe offen gestanden nicht wieso.
Ich will jetzt nicht den gesamten Code posten, da ich nichtmal den Hauch einer Idee habe, wo der Fehler liegen könnte und ich niemandem hunderte Zeilen Quellcode zumuten will. Auf Anfrage kann ich aber gerne Code nachreichen.
Wäre echt spitze, wenn mir jmd nen Anstoß oder Hilfe geben könnte, dass ich an der Stelle mal weiterkomme...
Greetz
Coop
ich bin neu im Forum, deswegen erstmal ein Hallo an alle

Zu meinem Problem:
Ich habe ein Captcha im PHP gebaut, das einen Zufallsstring in ein Bild schreibt. Das geschieht in der bildgenerierung.php . In selbiger Datei wird der Zufallstr. in die $_SESSION['captcha'] geschrieben.
Code:
PHP-Code:
# Header ändern um Bildausgabe zu garantieren
header("content-Type:image/png");
# Session aufmachen;
session_start();
# Bild zufällig aus vorgegebener Datei erzeugen (Captcha 1-5) size 140*40px
$nr = rand(1,4);
$bild = imagecreatefrompng("captcha/Captcha".$nr.".png");
$nr = "";
# Farben und Schriftgröße festlegen
$schriftfarbe = imagecolorallocate($bild,105,105,105);
$font = "fonts/AnkeCall.ttf";
$fontsize = 25;
$winkel = rand(-5,5);
// Zufallsstr erzeugen
$Kette = "ABCDEFGH2345689";
$randstr1 = substr(str_shuffle($Kette),0,2);
$randstr2 = substr(str_shuffle($Kette),0,2);
$randstr3 = substr(str_shuffle($Kette),0,2);
$zufallstring = $randstr1.$randstr2.$randstr3;
# Zufallsstr in SESSION speichern
if (isset($_SESSION['captcha']))
{
unset ($_SESSION['captcha']);
$_SESSION['captcha'] = $zufallstring;
}
else
{
$_SESSION['captcha'] = $zufallstring;
}
#Text in Grafik zentrieren
$str_x = (60 - (imagefontwidth($fontsize) * strlen($zufallstring))) / 2;
$str_y = (80 - imagefontheight($fontsize)) / 2;
#Grafik erzeugen Parameter: Grafik, Schriftgröße, Winkel, Start_Links, Start_Oben, Textfarbe, Schriftart, Text)
imagettftext($bild, $fontsize, $winkel, $str_x, $str_y, $schriftfarbe, $font, $zufallstring);
imagepng($bild);
imagedestroy($bild); // Speicher freigeben
Wenn ich im Formular die Session['captcha'] ausgeben lasse (also aufrufen und immer wieder F5), dann hängt die Ausgabe immer hinterher.
Also wenn der Zufallstr. beim 1. Aufruf "1234" lautet und beim 2. 2345, dann steht in dem Bild "2345" und in der Ausgabe der Session "1234".
Damit ist der Vergleich zwischen Usereingabe und dem Bildcode auch irgendwie fürn Eimer -.-!
Und ich verstehe offen gestanden nicht wieso.
Ich will jetzt nicht den gesamten Code posten, da ich nichtmal den Hauch einer Idee habe, wo der Fehler liegen könnte und ich niemandem hunderte Zeilen Quellcode zumuten will. Auf Anfrage kann ich aber gerne Code nachreichen.
Wäre echt spitze, wenn mir jmd nen Anstoß oder Hilfe geben könnte, dass ich an der Stelle mal weiterkomme...

Greetz
Coop
Kommentar