Ну в БД например таблица userhashs
id_user hash
Нужно тебе сформировать ссылку на восстановление пароля какому то юзеру:
1) генеришь хэш:
$hash = md5(uniqid());
2) записываешь его в таблицу соответственно юзеру
3) высылаешь ему ссылку вида сайт/recreate.php?hash=вот_этот+md5_хэш
Когда он перейдет по ссылке попадет на recreate.php, в нем ты:
1) проверяешь есть ли такой хэш в БД.
2) Если да, то показываешь форму ввода нового пароля
3) При успешном вводе нового пароля, пароль(его уже другой хэш) сохраняется, а из таблицы userhashs ты удаляешь этого юзера, все по этой ссылке уже не перейдешь
_____________
There never was a struggle in the soul of a good man that was not hard