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 :)
 
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
 
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...
 
Il submit ricarica la pagina e php reinterpreta tutte le istruzioni, di conseguenza le variabili vengono reinizializzate
non puoi impedirlo
 
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...


:(
 
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
 

Discussioni simili