Для начала на странице типа /reset мы вводим в поле имейл и проверяем есть ли такой. Если есть, то в отдельной таблице или в новом поле (в вашем user) соотносим имейл и случайные символы (как с авторизацией). И отправляем на тот имейл ссылку типа example.com/reset?[случайные символы]. По переходу на reset?[ххх] проверяем к какому имейлу или пользователю относится эти символы. После чего меняем password в таблице. (Не забывая зашифровать).
PS: лучше задавать такие вопросы на stackoverflow или на других тематических форумах. И да, сухо, я знаю. (Без примеров)
Answers & Comments
Алгоритм довольно простой и сложный одновременно.
Для начала на странице типа /reset мы вводим в поле имейл и проверяем есть ли такой. Если есть, то в отдельной таблице или в новом поле (в вашем user) соотносим имейл и случайные символы (как с авторизацией). И отправляем на тот имейл ссылку типа example.com/reset?[случайные символы]. По переходу на reset?[ххх] проверяем к какому имейлу или пользователю относится эти символы. После чего меняем password в таблице. (Не забывая зашифровать).
PS: лучше задавать такие вопросы на stackoverflow или на других тематических форумах. И да, сухо, я знаю. (Без примеров)