Hallo,

ik heb de volgende code:


<img src="spam.php?e=captcha" alt="captcha" /> &raquo;
<input type="text" name="captcha" value="<?= $_SESSION['cap_code']; ?>" maxlength="4" />

Nu krijg ik dus een afbeelding met een anti-spam code (captcha) en in die code word die session variabele gezet. maar nu is het probleem dat in het tekstvak de vorige sessie variabele komt te staan. dit komt volgens mij doordat de sessie variabelen in de gastenboek op het begin worden ingeladen. en dan die code pas na die afbeelding. dus dat de gastenboek nog de vorige inhoud van die variabele heeft.

nu heb ik al dit geprobeert:
<img src="spam.php?e=captcha" alt="captcha" /> &raquo;
<?php
//verwijderen na debuggen:
//is om sessie variabelen van de afbeelding te verkrijgen
session_commit();
session_start();
?>
<input type="text" name="captcha" value="<?= $_SESSION['cap_code']; ?>" maxlength="4" />


zodat die variabele opnieuw 'ingelezen' wordt. maar ik krijg nog steeds die vorige code ipv de huidige.
(het nut is om te communiceren met de andere mensen die de website meemaken. als hij klaar is wordt dit terug verwijderd)

maar de vraag is dus: weet iemand wat ik moet instellen of welke code ik moet gebruiken om toch die variabele juist in het tekstvak te krijgen?

dankt!
Ik denk dat je de code waar je captcha aangemaakt wordt even aan moet passen. Je zegt dat de code die in de captcha komt te staan in hetzelfde script aangemaakt wordt als waar de afbeelding gemaakt wordt?

In dat geval krijg je dus elke keer dat er een nieuwe afbeelding van de oude code wordt gemaakt, dat de oude code direct weer overschreven wordt met een nieuwe. Je moet dus zorgen dat je die 2 onderdelen (het aanmaken van de code en het maken van het plaatje) apart uitgevoerd worden.

Een voorbeeldje kun je hier vinden.
zo werkt het nog niet, ik had oorspronkelijk die session variabele dan zo geset:

<?php
function captcha(){

//....

//afbeelding uitputten
header("Content-type: image/png");
imagepng($img);
imagedestroy($img);

return $str;
}
?>

die $str is dan de code die gegenereerd is

en dan zet ik dit:

<?php
session_start(); //sessie starten voor captcha code
$_SESSION['cap_code'] = captcha();
?>

dus dat is eigenlijk hetzelfde dan jui doet in je twee functies.... volgens mij ligt het echt aan dat het in twe everschillende bestanden gebeurd. die spam.php word niet geinclude maar er word een afbeelding geplaatst met als sourse spam.php?e=captcha.

want als ik de juiste code invul en op submit druk dan werkt het wel (en met verkeerde code niet wat logisch is)
dus dat wilt zeggen dat daar die sessie variabele opeens wel goed zit...
ok bedankt!

toch opgelost gekregen: die functie om de code te maken heb ik nu op mijn index pagina gezet ipv in spam.php en pas op mijnb gastenboek opgeroepen. en zo blijkt het wel te werken.

een stomme fout waar je lang achter kan zoeken! :)

Reageren