PHP ver gevorderde |
|
Hey SiMa Leute,
Ik ben zojuist achter een probleem gekomen in mijn Captcah systeem. Voor de gene die niet weten wat een captcha is, klik hier. Het probleem zit als volgt: (ps. Ik wil niemand de les o.i.d lezen, maar ik probeer alles even zo goed en duidelijk mogelijk uit te leggen om misverstanden te voorkomen. Dus mocht je bij wat informatie denken van 'o ja joh? Meen je dat?', dan is dat niet omdat ik jullie voor dom o.i.d aanzie! Maarja, het probleem...)
Zodra je op register.php komt, controleerd hij of de sessie voor de captcha is gezet ( $_SESSION['confirm_key'] ). Zoniet, maakt hij die sessie aan. ( $_SESSION['confirm_key'] = $new_key; ) Zowel, houd hij die aan. Deze sessie moet, omdat bij het submitten de pagina refreshed. Als die sessie er niet is, krijg ik dus elke keer een nieuwe key en zou de inhoud die je opgeeft nooit kloppen. Als er iets niet klopt in één van de if(else) controles, en er wordt een foutmelding aangemaakt, en maakt hij de sessie leeg ( $_SESSION['confirm_key'] = ""; ). Zou dit niet gebeuren blijft de sessie staan, en wordt er een nieuwe key aangemaakt die uiteindelijk niet klopt met de oude sessie. Maarja, dat werkt allemaal mooi, en nu komt dan het echte probleem. Als ik de pagina refresh, maakt hij ook weer een nieuwe key aan, die ik niet van tevoren leeg kan gooien door gewoon aan het eind van mijn script $_SESION['confirm_key'] = ""; te zetten, want bij het submiten zou hij dan ook de key weer leeg gooien... en dan kan ik alsnog niet de key die is gezet controleren.
Dus weet iemand een manier hoe ik er voor kan zorgen dat er bij een handmatige refresh (dus ook index.php -> register.php -> index.php -> register.php (omweg refresh, maar session wordt wel gezet)) een sessie wordt leeg gegooid, en een nieuwe aan te maken , en zo dat als er wel een echte submit is dat dit niet gebeurd?
Voor degene die dit snapt (beter kan ik het denk ik echt niet uitleggen) en die een beetje kan helpen.. Alvast SUPER, maar dan ook SUPER bedankt, want ik weet hier echt even niets op te verzinnen.
Mocht je willen testen wat ik ongeveer bedoel, doe dan het volgende.
#1. ga naar http://www.race4respect.com/reset.php
#2. vul in gebruiker: testkees email: test@test.nl
#3. vul de code in uit de image in, en druk op 'email reset details'
- Hier zul je zien dat alles in goed gaat zoals het moet, hij gaat namelijk niet zeuren over ongeldige key (als je hem goed hebt ingevuld).
Probeer nu het volgende:
#1. ga weer naar http://www.race4respect.com/reset.php
#2. druk op F5 om de pagina te refeshen
#3. vul in gebruiker: testkees email: test@test.nl
#4. vul de code in uit de image in (GOED), en druk op 'email reset details'
- Nu zie je in het rode vakje het volgende staan:Citaat: The provided confirmation key was not equal to the content of the image . Ofterwijl je hebt de code 'verkeerd' ingevuld volgens de site, wat dus niet het geval is. Dat moet dus opgelost worden, en het probleem ontstaat door wat ik in het begin heb uitgelegd.
Het klinkt misschien ingewikkeld of misschien ook niet, maar er is vast (een aardig makkelijke) oplossing voor.
Nogmaals, alvast héél erg bedankt,
Nrzonline
|