Вот что я делаю:
У меня есть таблица reset_password. Когда кто-то запрашивает сброс, он обычно щелкает ссылку на вашем сайте с надписью «забыл пароль», где он вводит свою электронную почту, с которой он зарегистрирован, и ваша система отправляет ссылку.
Конечно, вы начинаете с выяснения, зарегистрирован ли пользователь вообще. выбрав пользователей, где email = $ _POST ['email'].
Если они существуют, создайте случайно сгенерированный токен, например
$token = md5($_POST['email'].time());
Но, как сказал Бух Бух в комментарии ниже, вы можете использовать что-то менее очевидное для генерации вашего токена. crypt () может принять шаблон соли, если хотите.
Вставьте запрос (адрес электронной почты и токен) в таблицу reset_password, а затем отправьте им ссылку, например
http://www.domain.com/resetpassword.php?token=<?php echo $token; ?>
Затем в этом файле вы берете $ _GET ['token'] и сопоставляете его с таблицей reset_password. Если токен действителен, вы предоставляете им форму, которая запрашивает новый пароль.
После отправки выберите пользователя с адресом электронной почты, связанным с этим токеном, и обновите таблицу пользователей.