Ik ben het volgende van plan met een formulier:
1. Code in een sessie gooien
2. Toon captcha'ed code in formulier
3. Als er sprake is van een POST request controleren of hetgeen de gebruiker ingevoerd heeft overeen komt met dat wat in de sessie staat
Als het wél overeen komt: rest van het formulier afhandelen
Als het niet overeen komt: nieuwe captcha code tonen
En dan begint het weer van voor af aan zegmaar.
Ik heb nu deze (voor GoT versimpelde) code:
In feite zou 'ie met deze code moeten kunnen werken. Dat blijkt alleen niet zo te zijn. Ergens gaat iets fout met de vergelijking, de waarde in de sessie komt dus niet overeen met de waarde die een gebruiker gepost heeft. Ik ben al enige tijd bezig met het oplossen hiervan, en zelfs met de versimpelde versie krijg ik het niet aan de praat.
De captcha is trouwens niets anders dan een afbeelding waar de inhoud van captcha_code in staat.
Hoe krijg ik dit in hemelnaam werkend ?
1. Code in een sessie gooien
2. Toon captcha'ed code in formulier
3. Als er sprake is van een POST request controleren of hetgeen de gebruiker ingevoerd heeft overeen komt met dat wat in de sessie staat
Als het wél overeen komt: rest van het formulier afhandelen
Als het niet overeen komt: nieuwe captcha code tonen
En dan begint het weer van voor af aan zegmaar.
Ik heb nu deze (voor GoT versimpelde) code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| <?php if($_SERVER['REQUEST_METHOD'] == "POST") { extract($_POST); /* Check of captcha code correct is ingevuld */ if(strtolower(trim($frmCaptcha)) == strtolower(trim($_SESSION['captcha_code']))) { echo "oke"; } else { /* Captcha code komt niet overeen. */ $_SESSION['captcha_code'] = genRandomCode(); //Sla de captcha code op in de sessie. $smarty->assign("wrongCode",1); //Toon foutmelding $smarty->assign("template","links/add.tpl"); $smarty->display("index.tpl"); } } else { /* Toon formulier waar gebruiker link mee kan toevoegen */ $_SESSION['captcha_code'] = genRandomCode(); //Sla de captcha code op in de sessie. $smarty->assign("template","links/add.tpl"); $smarty->display("index.tpl"); } ?> |
In feite zou 'ie met deze code moeten kunnen werken. Dat blijkt alleen niet zo te zijn. Ergens gaat iets fout met de vergelijking, de waarde in de sessie komt dus niet overeen met de waarde die een gebruiker gepost heeft. Ik ben al enige tijd bezig met het oplossen hiervan, en zelfs met de versimpelde versie krijg ik het niet aan de praat.
De captcha is trouwens niets anders dan een afbeelding waar de inhoud van captcha_code in staat.
Hoe krijg ik dit in hemelnaam werkend ?