Источник: http://spectator.ru/
На многих сайтах есть регистрация пользователя. Начиная с livejournal.com и заканчивая dirty.ru. Мне недавно довелось делать самому такую регистрацию, и я придумал одну идею, которая не претендует на гениальность, однако используется она далеко не везде. По крайней мере, я ничего подобного до сих пор не видел. Может быть, плохо смотрел. Но факт остается фактом.
Проблема в том, что пользователи, в основной массе своей — тупые существа. Или, чтобы не обидеть, скажем — «непредсказуемые». Мало кто может предсказать, почему пользователь завел аккаунт и больше никогда им не пользовался. Но факт остается фактом: многие пользователи регистрируется по неизвестным никому причинам, забивают «красивые логины», при этом не пользуются плодами своей регистрации.
Добавим сюда же проблему валидных email’ов. Очень часто там нужно, чтобы при регистрации пользователь указывал существующий и работающий ящик. Это была постановка задачи: мы рассчитываем на массовую регистрацию. Нам нужен пользователь с валидным email’ом, при этом нам нужно отсекать регистраторов, которые просто хотят проверить, «как это работает».
Обычно решается все просто: на мыло, указанное при регистрации, приходит ссылка, на которую нужно нажать, чтобы активировать аккаунт. Если он не активирован, то через n дней скрипт проверяет базу и удаляет неактивированные регистрации.
Но я придумал способ
1. В начале регистрации пользователь вводит необходимые данные: логин, пароль и email. Здесь мы проверяем логин на уникальность и пароль на соответствие нормам безопасности. Если все хорошо, то на основе этих данных генерится уникальная ссылка, которая отправляется пользователю по почте. («Вы должны нажать на эту ссылку, чтобы продолжить регистрацию»).
Уникальная ссылка выглядит примерно так:
login=qwerty&password=zzzzzzz&email=mail@mail.ru
&approve=c76681e374ff48fc282af35bc9e25007.
Аpprove — это md5, завязанная на
В базу пользователей при этом абсолютно ничего не пишется. Если пользователь указал кривой email, или просто забыл/не посчитал нужным продолжить регистрацию — это его проблемы, мы про него не помним.
2. Пользователь нажал на ссылку. Мы тут же про него вспоминаем (берем информацию о нем из уникальной ссылки, а не из базы), заводим его в базе, автоматически логиним и отправляем… нет, не на страницу «продолжение регистрации». Во многих системах я наблюдал ненужное дублирование: есть страница регистрации, на которой пользователь вводит данные, и есть место (назовем его «страница пользователя»), где пользователь уже после регистрации может изменить эти данные. Но, по сути дела, эти страницы — одно и то же. «Так зачем платить дважды?»…
Поэтому мы создаем, логиним пользователя и отправляем его на
его же незаполненную страницу пользователя. Если там есть required
fields, то там ему и пишем: «Заполните
С точки зрения простого пользователя все выглядит совсем не
страшно: ему нужно
Может возникнуть ситуация, когда два человека пытаются зарегестрировать
один логин. Тогда побеждает тот, кто первый нажал на ссылку. Но
Вот и вся идея. Надеюсь,
Подробности для тех, кто не понял.