Я обычно создаю строку символов, которые я считаю действительными символами пароля.Затем я использую rand () с substr () в цикле, чтобы создать случайный пароль, по одному символу за раз.
Затем, получив пароль, вы отправляете HTTPS-ссылку клиенту по электронной почте, котораяпозволяет им «подбирать» пароль в течение ограниченного времени.
После того, как вы позволите пользователю сменить пароль, вы должны хранить только хэш пароля в базе данных.
Конечноэто можно упростить, удалив пароль и просто воспользовавшись уникальной ссылкой и потребовав от них установки пароля при нажатии на защищенную ссылку.