io personalmente ho risolto così:
- pagina con il form richiesta di registrazione
- pagina che legge i dati inviati ( comunica eventuali errori all'utente; inserisce l'utente nel database settando il campo 'convalidato' = 0 e il campo 'codice_convalidazione' = <codice>; invia una mail ); ho generato il <codice> concatenando l'ip dell'utente senza puntini, con il risultato della funzione time() e un numero random di 7 cifre
- la mail contiene un messaggio di benvenuto e il link da cliccare, con il <codice> appeso all'url
- il link punta alla pagina di convalida della registrazione, la quale legge il <codice> appeso all'url e setta il campo 'convalidato' = 1 all'utente nel database caratterizzato da quel <codice>
- da questo momento in poi l'utente e' abilitato a loggarsi
--------------------------
spero che ti sia utile, e spero che sia utile anche a me, per scoprire come migliorare questo meccanismo che ritengo rozzo