Conferma registrazione a un sito

Ciao,

ho fatto una pagina per la registrazione di un utente, al termine viene inviata una mail che chiede all'utente di seguire un link per essere attivato. Nella pagina raggiunta verra' effettuata l'attivazione dell'utente.

tutto ok eccetto il link da inviare con l' e-mail.

Come soluzione ho pensato a un link del tipo:

           pagina.php?id="98765"

dove id e' l'id utente nel db, ma non mi sembra un'ottima soluzione perche' se modifico l'url e inserisco un codice a caso potrei attivare chiunque.

Un alternativa alla mia soluzione quale potrebbe essere?

grazie

 :bye:

inviato 10 anni fa
purpitta
X 0 X

Puoi inserire nella tabella degli utenti un campo "chiave_attivazione" di tipo varchar. Al momento della registrazione crei un codice alfanumerico "casuale", legato magari all'orario, al nome utente, ad una ulteriore parola segreta.

Es.:

$chiave_attivazione = md5(time() . $nome_utemte . 'mia stringa segreta');

l'md5 serve a creare un hash di quelle stringhe concatenate, in modo da avere una stringa di 16 caratteri alfanumerica "senza senso"

Invia poi questa stringa come parametro nell'url di attivazione e memorizzala nel DB. Quando l'utente clicca sull'URL devi semplicemente vedere se la stringa è presente nel DB ed attivare l'utente relativo

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

quindi se non ho capito male

devo sempre iviare i dati nell'url......

       pagina.php?msg=$chiave_attivazione

e la sicurezza la ottengo grazie all'utilizzo della funzione hash...

:) Grazie

 :bye:

risposto 10 anni fa
purpitta
X 0 X

Esatto, la sicurezza viene dal fatto che la chiave che produci è praticamente impossibile da indovinare. Questo non dipende principalmente dall'hash ma dai dati che vengono utilizzati per creare l'hash.

Se ad esempio avessi utilizzato l'hash del nuome utente, con un po' di tentativi il meccanismo sarebbe stato scoperto. Ecco perché ti ho proposto di fare un hash di variabili abbastanza casuali o difficili da intuire a chi non conosce lo script

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda