Stringa casuale "doppia"

JtothaX

Utente Attivo
2 Ott 2013
78
0
0
Treviso
Amici salve,

ho un problema con un generatore di stringa random.
Lo uso come sorta di captcha semplificato per l'invio di form.

Faccio generare la stringa casuale e la salvo in una variabile.
$captchaGene = captchaGene(7)

e faccio stampare la variabile poi a video nello spazio che ho riservato a questo ipotetico captcha.
Quando poi arriva la stringa che digita l'utente $_POST['captcha_digitato'] = $captcha_digitato e viene inoltrato il form, ecco che arriva il problema. Ho notato che le due stringhe non coincidono mai perché al momento del submit viene come generata di nuovo la stringa random. Di nuovo (?!) per cui non potranno mai combaciare, uff.

Come potrei risolvere? Dove sbaglio?
Grazie a tutti e buon lavoro :)
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Cioa,ti conviene utilizzare le sessioni per memorizzare il codice generato altrimenti dovrai passarlo vi POST ma non è molto sicuro
se non è settato lo generi , se settato verifichi se è stato fatto il submit e lo confronti con quello digitato
se non corrispondo lo distruggi per crearne un altro
PHP:
<?php

session_start();

if (!isset($_SESSION['captchaGene']))
    $_SESSION['captchaGene'] = captchaGene(7);

if (isset($_POST['captcha_digitato'])) {
    if ($_POST['captcha_digitato'] == $_SESSION['captchaGene']) {
        
    } else {
        unset($_SESSION['captchaGene']);
    }
}
?>
è un idea, non ho testato
 

JtothaX

Utente Attivo
2 Ott 2013
78
0
0
Treviso
Cioa,ti conviene utilizzare le sessioni per memorizzare il codice generato altrimenti dovrai passarlo vi POST ma non è molto sicuro
se non è settato lo generi , se settato verifichi se è stato fatto il submit e lo confronti con quello digitato
se non corrispondo lo distruggi per crearne un altro
PHP:
<?php

session_start();

if (!isset($_SESSION['captchaGene']))
    $_SESSION['captchaGene'] = captchaGene(7);

if (isset($_POST['captcha_digitato'])) {
    if ($_POST['captcha_digitato'] == $_SESSION['captchaGene']) {
        
    } else {
        unset($_SESSION['captchaGene']);
    }
}
?>
è un idea, non ho testato
Ciao! Anzi tutto grazie del reply.
Personalmente vorrei evitare l'uso delle sessione per una cosa così semplice.
Non capisco perché se genera la stringa casuale e la salva in una variabile, questa debba cambiare nel momento do l'inoltro del form. Voglio dire, l'ho salvata in una variabile apposta per farci quello che mi serve...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Il submit ricarica la pagina e php reinterpreta tutte le istruzioni, di conseguenza le variabili vengono reinizializzate
non puoi impedirlo
 

JtothaX

Utente Attivo
2 Ott 2013
78
0
0
Treviso
Il submit ricarica la pagina e php reinterpreta tutte le istruzioni, di conseguenza le variabili vengono reinizializzate
non puoi impedirlo
Nemmano se mettessi mano qui?
<form name="contact" action="index.php?mod=contatti">
...
</form>

Io voglio semplicemente mettere l'utente davanti ad una stringa e farla combaciare con quella che scrive lui.
Senza fronzoli e senza complicare troppo le cose...


:(
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Non c'è niente di comlicato nell'usare le sessioni
puoi mandare la stringa generata anche via POST
PHP:
<input type='hidden' name='captchaGene' value='<?php echo $captchaGene;?>'/>
o via GET
PHP:
<form name="contact" action="index.php?mod=contatti&captchaGene=<?php echo $captchaGene;?>">
in ogni caso devi passarla quando fai il submit perchè non si memorizza da sola ricaricando la pagina verificare poi se settata per non rigenerarla