На данный момент Интернет изобилует сайтами всякого рода деятельности. Сайты самые разные. От просто информационного до немыслимо огромных порталов.
Практически каждый сайт предлагает пользователям зарегистрироваться, и дает некий функционал для пользователя, будь то покупка товара или просто написать сообщение на форуме и т. д.
Со временем количество зарегистрированных пользователей становиться слишком много, и многие из них не совсем пользователи. Таким образом, появилась причуда проверять пользователей при регистрации. Сайт посылает мыло на данный email адрес. В письме содержится ссылка по который пользователь может активировать свою регистрацию. Это действительно помогает получать только реальных пользователей.
Вот именно на этом моменте я бы хотел остановиться подробнее.
Создать такую систему не так уж и сложно я бы даже сказал очень просто. Но давайте обсудим какие есть пути для этого:
1. Использовать главную таблицу customers. В ней должно быть поле email_confirmed. Т. е. если пользователь активировал свою регистрации с помощью ссылки в письме, то устанавливаем этот параметр в “yes”.
Но если пользователь не активировал регистрацию то параметр останется “no”
Таким образом, в таблице будет собираться “хлам” который надо время от времени очищать. Конечно, мы можем сделать крон, который будет запускать определенную задачу время от времени, которая будет удалять старый “хлам”.
Минусы:
- есть опасность, что при удалении “хлама” удалиться “не хлам” или даже можно случайно удалить всю базу пользователей.
- нужно создавать отдельную задачу для очистки “хлама”
Плюсы:
- нет необходимости создавать дополнительную таблицу для хранения временных пользователей.
- данные о пользователях хранятся на сервере
2. Использовать дополнительную таблицу для временных пользователей.
Т. е. при регистрации пользователя мы его заносим в customers_temporary.
Отправляем письмо с ссылкой. При подтверждении регистрации удаляем его customers_temporary и добавляем в customers.
Если пользователь не подтвердил регистрацию - он остаётся в этой таблице. Т.е. опять собирается “хлам”.
Нужен крон чтобы удалять хлам. Но в принципе можно его и не трогать.
Минусы:
- нужно создавать отдельную задачу для очистки “хлама”
- дополнительный код для обработки дополнительной таблицы.
Плюсы
- при очистки хлама нет опасности удаления реального пользователя
- данные о пользователях хранятся на сервере
3. Не использовать никакую дополнительную таблицу. Просто кодируем данные пользователя в строку. И отправляем ему ее виде ссылки на email. Т. е. фактически реальная регистрация произойдет после подтверждения регистрации с помощью данной ссылки.
Минусы:
- если пользователь решит войти на сайт с помощью данных с неподтвержденной регистрации то мы его не найдем в нашей базе. Мы просто ему скажем, что его здесь нет – давай регистрируйся (было бы лучше сказать ему что его регистрация не закончена.)
Плюсы:
- не надо никаких кронов
- не надо никаких дополнительных таблиц