potresti fare così
temp_pass
il resto dei dati (username ed email) sono nella tabella utenticodice:+-----+-----------+--------------------+----------+ | id | id utente | codice di conferma | scadenza | +-----+-----------+--------------------+----------+
quando un utente ha dimenticato la password, digita il suo username in un form
lo script prende l'email associata all'username, genera un codice e lo invia
l'utente va su un altro modulo simile a quello di login e da qui digita username e codice di conferma (potresti anche farlo con un link)
lo script verifica il codice di conferma associato all'username sulla tabella temporanea. Se è corretto e non è scaduto, invia all'indirizzo email la nuova password e modifica l'esistente sulla tabella utenti