Guten Abend bzw. guten Morgen!
Ich versuche gerade eine Art Captcha zu erstellen, aber irgendwie funktioniert meine SESSION nicht, wenn ich diese in der Datei erzeuge, die auch die Grafik erzeugt.
Wenn ich ganz banal folgendes mache:
und das ganze dann wie folgt entgegennehme (test.php):
...dann funktioniert alles!
Wenn ich die SESSION jedoch in einer Grafikdatei (grafik.php) starte, ist die SESSION Variable Test immer leer.
grafik.php:
Wenn ich das oben stehende Formular abschicke und mit der oben stehenden test.php auswerte, lautet die Ausgabe halt exemplarisch:
$_SESSION["test"] ist also leer. Nun frage ich mich, warum das obere Beispiel funktioniert, nicht aber bei zweiter Variante. Kann mir jemand helfen?
Ich versuche gerade eine Art Captcha zu erstellen, aber irgendwie funktioniert meine SESSION nicht, wenn ich diese in der Datei erzeuge, die auch die Grafik erzeugt.
Wenn ich ganz banal folgendes mache:
PHP-Code:
<?php
session_start();
unset($_SESSION["test"]);
$zahl = rand(100,999);
$_SESSION["test"] = $zahl;
echo "Gebe die Zahl $zahl ein:";
?>
<form action="test.php" method="post">
<input name="eingabe"><br>
<input type="submit" value="abschicken">
</form>
PHP-Code:
<?php
session_start();
$erwartet = $_SESSION["test"];
$eingabe = $_POST["eingabe"];
echo "Du solltest die Zahl $erwartet eingeben und hast die Zahl $eingabe eingegeben!";
unset($_SESSION["test"]);
?>
Wenn ich die SESSION jedoch in einer Grafikdatei (grafik.php) starte, ist die SESSION Variable Test immer leer.
Code:
<img src="grafik.php"> <br> Gebe die Zahl aus dem Bild ein! <form action="test.php" method="post"> <input name="eingabe"><br> <input type="submit" value="abschicken"> </form>
PHP-Code:
<?php
session_start();
unset($_SESSION["test"]);
$zahl = rand(100,999);
$_SESSION["test"] = $zahl;
header("Content-type: image/png");
$bildholen = ImageCreateFromPNG('meinbild.png');
$schriftfarbe = ImageColorAllocate($bildholen, 255, 255, 255);
$schrift = "blablabla.ttf";
$schriftsize = 20;
$angle = 0;
$x = 20;
$y = 20;
imagettftext($bildholen, $schriftsize, $angle, $x, $y, $schriftfarbe, $schrift, $zahl);
imagepng($holebild);
imagedestroy($holebild);
Du solltest die Zahl eingeben und hast die Zahl 392 eingegeben!
Kommentar