@Boris007

Каким образом проходит ожидание на сервере через подтверждение по почте?

Когда нам нужно подтверждение почты, как мы на сервере или бд храним наш запрос на создание нового пользователя?
Мы держим эту запись во временном кэше сервера или создают отдельную таблицу для аккаунтов, ожидающих подтверждения?
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
@maksam07
Почитал комменты и понял, что лучше иметь немного другую модель.
Есть к примеру таблица:
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    registration_status TINYINT(1) NOT NULL DEFAULT 0,
    registration_token VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);


При регистрации, устанавливаем "registration_token", к примеру, через uniqid() или openssl_random_pseudo_bytes() и на почту отправляем специальную ссылку с, к примеру, гет запросом: domain.com/?email="email"&token="registration_token"
Пользователь переходит по ссылке, в бд идет проверка, есть ли такая запись и меняет "registration_status"=1
Почему этот вариант лучше? Потому что так ты не сможешь обойти сообщение с почты, т.к. не будешь знать, какой токен тебе выдался для подтверждения и будет недостаточно просто 1 раз увидеть пример подтверждающей ссылки, чтобы новые аккаунты активировать по определенному шаблону ссылки.

А по "created_at" отслеживаешь старые аккаунты и удаляешь, если потребуется.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы