Anhand dieser 2 Dateien, erzeuge ich eine Zufallszahl in einem Bild. Klappt wunderbar.
Jedoch, wenn ich im Script site.php die Session[„checkValue“] abfrage, bekomme ich immer den Wert der Zufallszahlen, des letzten Durchlaufs, warum??
Was habe ich übersehen?
Wie gesagt, das Bild wird geladen, die Zufallszahlen werden berechnet, nur die Session hat immer einen Wert vor dem aktuellen Wert drinnen…
so wie du die zufallszahl speicherst macht das keinen sinn.
ich nehm einfach mal an das du mit diesem Captcha bots ausschließen willst.
da die Bots aber zugriff auf den Quelltext hätten würde die Zahl dort in Klarschrift stehen so das diese ohne aufwand ausgelesen und angegeben werden könnte.
wenn du den Captcha sicher speichern willst musst du ihn rein Serverseitig abspeicher. Z.Bsp. als textfile oder in einer Datenbank.
zu der Session nehme ich jetzt einfach mal an das das script site.php vor dem script test.php zuende ist da dieses script als eigene anfrage ausgeführt wird und die site.php nicht wartet bis in das script test.php zuende ist.
so wie du die zufallszahl speicherst macht das keinen sinn.
ich nehm einfach mal an das du mit diesem Captcha bots
ausschließen willst.
da die Bots aber zugriff auf den Quelltext hätten würde die
Zahl dort in Klarschrift stehen so das diese ohne aufwand
ausgelesen und angegeben werden könnte.
Genau, das will ich verhindern, jedoch, werde ich das input=„text“ in input=„hidden“ ändern, dann dürfte es kein Problem sein, oder etwa doch??
wenn du den Captcha sicher speichern willst musst du ihn rein
Serverseitig abspeicher. Z.Bsp. als textfile oder in einer
Datenbank.
habe ich mir auch schon überlegt, würdest du dann die ip, die zufallszahl und den timestamp in die datenbank eintragen, und dann überprüfen??
zu der Session nehme ich jetzt einfach mal an das das script
site.php vor dem script test.php zuende ist da dieses script
als eigene anfrage ausgeführt wird und die site.php nicht
wartet bis in das script test.php zuende ist.
Ja also das site.php wird aufgerufen, im img src=„test.php“ und dann wieder zurück nach site.php.
der Browser muss nunmal erst die PHP Datei laden, um zu wissen, welche Bilder eingebunden werden sollen, dann die Bilder. Wenn du dann aber eine neue Zufallszahl erzeugst, steht die falsche im Formular (wo sie nicht hin gehört, weil man sich das sonst schenken kann… die kann ein Bot dann nämlich auslesen), da das Bild danach geladen wurde und eine neue Zahl erzeugt hat.
Also
Zufallszahl im site.php erzeugen und in der Session speichern,
nicht ins Formular eintragen, auch nicht als hidden
in test.php diese verwenden, um die Grafik zu erzeugen
Nach Absenden des Formulars die Zahl aus der Session mit der im
Formular eingegebenen Zahl vergleichen
<?PHP :blush:id = uniqid(); ?\>
...
...
in der test.php speicherst du dann die id + den dazugehörigen
captcha in einer tabelle.
nach dem abschicken prüfst du dann ab ob die id den richtigen
captcha eingabe hat.
in der tabelle sollte dann auch ein timestamp stehen und nach
einer bestimmten zeit / nach aufruf sollte der eintrag aus der
tabelle gelöscht werden.
ich habs jetzt genau so gemacht, wie du gesagt hast, ich generiere eine ID, diese ID übergeb ich dem anderen (test.php) PHP-Script, frage dann ab ob die ID und der Wert von input type=„text“ mit den Werte in SQL übereinstimmt, wenn ja > Eintrag hinzufügen, wenn nein > Eintag nicht hinzufügen.