Buongiorno a tutti. Dopo parecchie ore passate a scornarmi con il problema in oggetto e averle provate tutte mi sono arreso e ricorro alla vostra benevola consulenza. Provo a riassumere i passi fatti per essere il più chiaro possibile.
[1] Ho scritto (ovviamente ispirandomi/copiando in questo sito) la classica procedura di registrazione di un utente, con tanto di captcha e dopo alcuni errori ora funziona tutto bene.
[2] Poi ho proseguito scrivendo lo script php che permette di resettare la password scordata dall'utente; per fare questo, l'utente deve indicare in un form l'e-mail data al momento della registrazione. E anche questo ora funziona.
[3] Il problema che passo ad esporre è nato nel momento in cui ho voluto inserire il captcha anche nello script del punto [2].
In buona sostanza il codice è:
Poi eseguo il controllo fra i 6 caratteri captcha generati casualmente e quelli che devo inserire io nel relativo campo, così:
Il risultato è questo:

Come si vede dalla figura, il confronto del captcha fallisce sempre perchè, mentre il codice casuale generato è presente in $_SESSION['security_code'], quello che introduco io $_POST['security_code'] è vuoto.
Perchè?
Grazie come sempre.
[1] Ho scritto (ovviamente ispirandomi/copiando in questo sito) la classica procedura di registrazione di un utente, con tanto di captcha e dopo alcuni errori ora funziona tutto bene.
[2] Poi ho proseguito scrivendo lo script php che permette di resettare la password scordata dall'utente; per fare questo, l'utente deve indicare in un form l'e-mail data al momento della registrazione. E anche questo ora funziona.
[3] Il problema che passo ad esporre è nato nel momento in cui ho voluto inserire il captcha anche nello script del punto [2].
In buona sostanza il codice è:
PHP:
if( !isset($_POST['logSysforgotPass']) && !isset($_GET['resetPassToken']) && !isset($_POST['logSysforgotPassRePass']) ){
$html='<form action="'.$_SERVER['PHP_SELF'].'" method="POST">';
$html.="<img src='CaptchaSecurityImages.php?width=200&height=50&characters=6' /><br />";
$html.="<input name='security_code' size='35' id='security_code' class='campi' maxlength='6' type='text' placeholder='Enter the above control code (6 characters)'><br>";
$html.="<label>$identName<br/><input type='text' id='loginSysIdentification' placeholder='Enter your e-mail' class='campi' name='identification'/></label><br>";
$html.="<br/><button class='btn-reset' name='security_code' type='submit'>Reset my Password</button>";
$html.="</form>";
echo $html; // questo mi pubblica il captcha, il campo da inserire in captcha, il campo da inserire l'e-mail ed il relativo bottone
Poi eseguo il controllo fra i 6 caratteri captcha generati casualmente e quelli che devo inserire io nel relativo campo, così:
PHP:
session_start();
if( isset($_POST['security_code'])) {
if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
$controllo="1";
echo "CODE OK";
unset($_SESSION['security_code']);
} else {
$controllo="0";
echo "CODE WRONG</br>";
echo "$_SESSION['security_code'] vale: "
echo $_SESSION['security_code'];
echo "<br>$_SESSION['security_code'] vale: "
echo $_POST['security_code'];
}
}
Il risultato è questo:

Come si vede dalla figura, il confronto del captcha fallisce sempre perchè, mentre il codice casuale generato è presente in $_SESSION['security_code'], quello che introduco io $_POST['security_code'] è vuoto.
Perchè?
Grazie come sempre.