Каким образом проходит ожидание на сервере через подтверждение по почте?
Когда нам нужно подтверждение почты, как мы на сервере или бд храним наш запрос на создание нового пользователя?
Мы держим эту запись во временном кэше сервера или создают отдельную таблицу для аккаунтов, ожидающих подтверждения?
Дополнительно:
А почему бы просто в таблице аккаунта не хранить булево поле подтверждения регистрации?
отдельную таблицу для этого создавать не стоит, если тупо подтверждение аккаунта например
за место булевого делают цифры, типа 0 или 1 вахха
В MySql подвезли буль? Сейчас быстро глянул доку по восьмерке, не нашел
я говорю что видел что бэкендеры хранят тип номера как 0 или 1 в бд
Ведь кто-то может ввести чужую почту, а запись после будет висеть в бд
Или, если кто-то будет спамить регистрации несуществующими почтами?
кароче суть в том что если установлен TINYINT(1) и стоит если 1 - то true, если стоит 0 то false, а разрабы некоторые делают int вообще тип
Неподтвержденные регистрации можете по крону удалять через какое-то время.
Почитал комменты и понял, что лучше иметь немного другую модель.
Есть к примеру таблица:
|
1 |
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" отслеживаешь старые аккаунты и удаляешь, если потребуется.
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?

Для реализации ожидания на сервере через подтверждение по почте можно использовать следующий алгоритм:
1. Пользователь вводит свои данные на форме и нажимает кнопку "Отправить".
2. Данные отправляются на сервер, где они обрабатываются.
3. Перед тем как сохранить данные в базу данных, на сервере генерируется уникальный код подтверждения (например, случайный набор символов или хэш от данных пользователя).
4. Этот код отправляется на почту пользователя в виде ссылки или просто текста для подтверждения.
5. Пользователь переходит по ссылке или вводит код в специальное поле на сайте.
6. Сервер проверяет код подтверждения и, если он совпадает с сгенерированным ранее, данные пользователя сохраняются в базе данных и процесс завершается успешно.
7. Если код подтверждения не совпадает, пользователю выводится сообщение об ошибке и процесс завершается неудачно.
Пример кода на PHP, реализующий этот алгоритм:
Это простой пример реализации ожидания на сервере через подтверждение по почте на PHP. Помните, что безопасность играет важную роль в подобных процессах, поэтому не забывайте обработку пользовательского ввода и защиту от атак.