Przy rejestracji, generujesz salt i dodajesz w dodatkowym polu w mysql, generujesz przez md5 naprzykład w ten sposób:
<?php
?>
Następnie gdy użytkownik zapomni hasła, to wysyłasz mu link na jego adres email, który podał w rejestracji do resetu hasła. Potem sprawdzasz, czy ten salt zgadza się z tym w bazie i na tej podstawie generujesz mu nowe hasło, albo podajesz formularz, aby mógł sobie sam wpisać, czego tutaj nie rozumiesz?

Pozdrawiam.