@pillson

Регистрация через смс стоит ли делать временную таблицу?

Делаю регистрацию через смс. Встал вопрос проверки некоторых случаев

1. Номер уже зарегистрирован (сделано) проверкой номера по базе
2. Ошибочный номер телефона (когда <11 знаков), так же висит маска + регулярка js на ввод только цифр + регулярка на бэкэ
3. Неверное смс - но тут встала сложность

Число генерирую через rand() и пишу его в базу юзера, привязка к номеру, получается он уже как бы внес в базу, это неправильно, думал передам через data в ответ аякса, увидел что код палится) не пойдет

Думаю сделать таблицу для временных промежуточных данных. Условно получаю данные из формы телефон и смс и пишу их туда. Потом сравниваю что пришло от пользователя и что в базе, если все ок, делаю insert в постоянную таблицу user иначе отдаю ошибку, думал сначала сделать пару полей в основной таблице но не стал, как будет все таки правильно подскажите. Спасибо
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Заводите отдельную таблицу.
CREATE TABLE IF NOT EXISTS `phoneAuthorisationCode` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `phoneId` INT UNSIGNED NOT NULL,
-- Код используется для авторизации, по этому хранить его в открытом виде очень плохая идея
    `codeHash` CHAR(16) NOT NULL,
    `createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-- Код временный, если expiredAt > CURRENT_TIMESTAMP - он прострочен и использовать его уже нельзя
    `expiredAt` TIMESTAMP NOT NULL,
-- Дату использования кода необходимо указывать. Если это поле не пустое, использовать этот код уже нельзя
    `processedAt` TIMESTAMP DEFAULT NULL,
    PRIMARY KEY (`id`)
)
    ENGINE = InnoDB
    DEFAULT CHARSET = `utf8`;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Senior .NET developer
храните в redus номер, код и дату когда можно повторить и количество попыток. Следующая попытка не ранее число попыток во 2 степени минут. Для борьбы со спамом.
Ответ написан
Ваш ответ на вопрос

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

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