Hallo zusammen,
habe ein (für mich) sonderbares Problem mit einem Captcha in einem Formular. Problem macht diese Funktion ('aufgewertet' um möglichst verbose Ausgaben)
1. Auf der Seite wird ein Formular geladen mit img include eines PHP Captcha. Dieses schreibt das aktuelle Captcha in eine Session-Variable 'captcha_spam'.
2. Der User füllt das Formular inklusive Code aus, drückt dann submit
3. Dieselbe Seite wird neu geladen, wurde 'submit' gedrückt, wird u.A. die Funktion "checkcaptcha()" ausgeführt. Diese soll '1' zurückgeben wenn der eingegebene Code nicht übereinstimmt, andernfalls '0'
3a. Diese Funktion liefert immer '1' wenn der Code falsch war. Soweit OK.
3b. Diese Funktion liefert jedes 2. Mal '1' wenn der Code richtig war.
Wieso?
Das Sonderbare ist hierbei, dass die richtigen Werte in der Funktion ankommen. Siehe unten Debug Ausgabe. Es ist also keinesfalls so, dass vielleicht irgendwo der falsche Code steht.
Debug-Ausgaben:
Vor der Funktion: 0
captcha_spam: PKVUL
POST Code: PKVUL
EpvYq = EpvYq
War NICHT identisch, gibt 1 zurück
Nach der Funktion: 1
Captchaerror=1
Captcha_Spam=PKVUL
Post war: PKVUL
??
habe ein (für mich) sonderbares Problem mit einem Captcha in einem Formular. Problem macht diese Funktion ('aufgewertet' um möglichst verbose Ausgaben)
1. Auf der Seite wird ein Formular geladen mit img include eines PHP Captcha. Dieses schreibt das aktuelle Captcha in eine Session-Variable 'captcha_spam'.
2. Der User füllt das Formular inklusive Code aus, drückt dann submit
3. Dieselbe Seite wird neu geladen, wurde 'submit' gedrückt, wird u.A. die Funktion "checkcaptcha()" ausgeführt. Diese soll '1' zurückgeben wenn der eingegebene Code nicht übereinstimmt, andernfalls '0'
3a. Diese Funktion liefert immer '1' wenn der Code falsch war. Soweit OK.
3b. Diese Funktion liefert jedes 2. Mal '1' wenn der Code richtig war.
Wieso?
Das Sonderbare ist hierbei, dass die richtigen Werte in der Funktion ankommen. Siehe unten Debug Ausgabe. Es ist also keinesfalls so, dass vielleicht irgendwo der falsche Code steht.
PHP-Code:
$captchaerror=checkcaptcha();
function checkcaptcha(){
echo (' captcha_spam: '.$_SESSION['captcha_spam']); //was ist in der Session?
echo (' POST Code: '.$_POST['sicherheitscode']); // was wurde gepostet?
if ('EpvYq' == 'EpvYq') echo ('EpvYq = EpvYq '); // einer der Fehler, denkt PHP falsch? (nein, diese Ausgabe kommt immer)
if ($_SESSION['captcha_spam'] == $_POST['sicherheitscode'])
{ echo "<br> WAR identisch, gibt 0 zurück";
return 0;
}
else {
echo "<br> War NICHT identisch, gibt 1 zurück";
return 1;
};
}
Vor der Funktion: 0
captcha_spam: PKVUL
POST Code: PKVUL
EpvYq = EpvYq
War NICHT identisch, gibt 1 zurück
Nach der Funktion: 1
Captchaerror=1
Captcha_Spam=PKVUL
Post war: PKVUL
??

Kommentar