grazie del suggerimento!
ho optato per usare $_SESSION. questo è il codice che va a scegliere una coppia di chiavi dal database. ho aggiunto una IF simile a quella che mi hai suggerito in modo che una chiava venga passata alla session solo se necessario.
le parti commentate servono per debug
Codice PHP:
nuovocaptcha ();
mysql_select_db($database_cnblogdb, $cnblogdb);
$query_rscaptcha = "SELECT * FROM captcha
WHERE SCADENZA > NOW()
ORDER BY RAND()
LIMIT 1";
$rscaptcha = mysql_query($query_rscaptcha, $cnblogdb) or die(mysql_error());
$row_rscaptcha = mysql_fetch_assoc($rscaptcha);
//echo "Session esistente:" . $_SESSION['CODICE'] . "
";
if (!isset($_SESSION['CODICE'])) {
$_SESSION['CODICE'] = $row_rscaptcha['CODICE'];
//echo "session aggiornata
RS:" . $row_rscaptcha['CODICE'] . "
nuova session:" . $_SESSION['CODICE'] . "
";
} /*else {
echo "session già presente
RS:" . $row_rscaptcha['CODICE'] . "
session esistente:" . $_SESSION['CODICE']. "
";
}*/
usando le session bisogna ricordarsi di aprirla:
Codice PHP:
if (!isset($_SESSION)) {
session_start();
}
e svuotarla quando non ci serve più, in modo che possiamo riutilizzare il codice qui sopra senza riavviare il browser. io ho messo questa stringa:
Codice PHP:
unset ($_SESSION['CODICE']);
dopo aver passato le chiavi da $_POST['CHIAVE'] e $_SESSION['CODICE'] in altre variabili per essere utilizzate da un'altra funzione (quella di controllo).
funziona tutto alla grande!
ho usato questo sistema per inserire un captcha nel modulo di iscrizione al sito. però mi sembra molto più sicuro che memorizzare dei dati sensibili nella $_SESSION, sbaglio?
se applicassi questo sistema anche per il login degli utenti andrei solo a complicarmi la vita? o avrei effettivamente un sito più sicuro?
PS: ho cambiato il nome delle variabili rispetto al primo post:
$CODICE --> CHIAVE
$URLK --> $CODICE
(scusa per la confusione)