Xpoint
   [напомнить пароль]

Как красиво избежать повторной регистрации пользователя?

Метки: [без меток]
2003-12-22 21:57:50 [обр] Tony(1/52)[досье]

Как регистрируются пользователи, это ясно. Далее сгенерированный пароль после регистрации отсылается по указанному адресу электронной почты. Некоторые пользователи не дожидаются пароля и регистрируются повторно. При этом привычный логин они уже указать не могут — он занят от предыдущей регистрации.

Как лучше избежать описанную мной ситуацию? Предлагаю вариант — сохранять информацию о том, что пользователь уже регистрировался и при попытке зарегистрироваться еще раз переспрашивать его всячески, уверен ли он и т.д. Как можно еще?

Есть еще одна ситуация повторной регистрации — когда пользователь 2 раза жмет кнопку "зарегистрироваться". Но это уже вопрос по части программирования и к нашей проблеме отношения не имеет.

спустя 12 часов [обр] polk(0/185)[досье]
Некоторые пользователи не дожидаются пароля и регистрируются повторно

???

А если при завершении регистрации выдавать:
"Данные для авторизации высланы на указанный вами e-mail. Для того, чтобы войти под учетной записью, нужно ввести в поле 'E-mail' указанный вами e-mail, в поле 'Пароль' высланный на ваш e-mail пароль", то для чего они будут регистрироваться повторно?

Может быть стоит на странице с регистрацией вешать пошаговую инструкцию "от регистрации до авторизации"?

спустя 3 дня [обр] Алексей Волков, он же «Росомаха из Флориды»(17/468)[досье]
спустя 39 минут [обр] Сергей Круглов(10/2057)[досье]
я что-то такое сделал году в 1999, когда с БД программить не умел ;)
спустя 1 час 50 минут [обр] Tony(1/52)[досье]

Алексей Волков, он же «Росомаха из Флориды»[досье]
Подход плохой. Одна лишь проблема совпадения логинов уже дыра. Да, собственно, проблема не в этом. Я не решаю проблему валидности мыла.

Проблема защитить пользователя от повторной регистрации. Пример — пользователь жмет кнопку "зарегистрироваться", ждет на мыло, скажем, пароль для входа. В мыле из-за плохого интернета не наблюдает письма. Идет и регистрируется снова, выбирая для себя тот же логин. Ясно, что логин уже недоступен. Тогда он вводит что-то типа login2004. И опять регистрируется. И потом на мыло ему приходит 2 письма от 2-х регистраций. Задача — исключить такой вариант.
А проверить валидность мыла — это не проблема.

спустя 33 минуты [обр] Дмитрий Эсс(0/102)[досье]
Tony[досье]
Может я Вас неправильно понял, но что Вам мешает сохранять e-mail'ы в БД и не выдавать более 1 аккаунта на 1 e-mail?
спустя 1 минуту [обр] Виталий Ульченков(0/116)[досье]
Одно мыло - один логин. И если пользователь пытается зарегестрировать ещё один логин на мыло, на котором уже есть неподтверждённая регистрация, рассказывать ему о том, что письмо скоро дойдёт, надо только ждать и надеяться.
спустя 15 часов [обр] Tony(1/52)[досье]

Дмитрий Эсс[досье]
Мешает то, что теоретически в системе под одним мылом может быть заведено несколько учетных записей "умышленно". Хотя, можно поступить немного по другому. Если такое мыло уже есть, предлагать пользователю напомнить логин или пароль для прошлого аккаунта или зарегистрировать новый. Но этот способ пригоден только для ситуации, когда пользователь пару месяцев назад регистрировался, затем зашел и снова регистрируется. А мы ему говорим — "Уважаемый, вы ведь уже регистрирвались, пройдемте в комнату восстановления памяти".

Но сейчас ситуация, когда пользователь сразу же начинает повторную регистрацию, и если мы в этой ситуации применим вышеописанный метод, то пользователь смутится.

Я предлагаю выход. Регистрация проходит в несколько шагов.

  1. Форма для ввода параметров (логин и др.).
  2. Проверка пользователем введенных данных.
  3. Всяческие поздравления и приглашение пользователя посмотреть свою почту.

Мы сохраняем информацию (не важно как) о том, что пользователь зарегистрировался и храним ее какое-то время (например, 10 минут) или, например, какое-то количество событий (например, забывать о том, что пользователь только что регистрировался, после того, как он походил по 5 страницам сайта).

Ситуация А.
Пользователь нажал на окончательную кнопку "зарегистрировался", учетная запись создана, но страницу поздравлений пользователь еще не видит из-за "медленного интернета". Пользователь идет снова на страницу регистрации или жмет "back" на форму ввода параметров, чтобы повторить регистрацию. Но мы его автоматически перекидываем на страницу поздравлений, что он зарегистрировался, тем самым давая ему знать, что все ОК и его "медленный интернет" не стал помехой в регистрации.

Ситуация Б1.
Пользователь нажал на окончательную кнопку "зарегистрировался", учетная запись создана. Пользователь ждет мыла, продолжая гулять по сайту и изучая его. Мыла не дожидается и идет регистрироваться снова (редко, но ситуация возникает). Тут мы ему напоминаем, что ждите, письмо с паролем для входа или чем-то там еще уже в пути.

Ситуация Б2.
То же, что Б1, но информация о том, что пользователь уже зарегистрировался, уже "забыта". В таком случае см. решение проблемы в начале этого поста. Этой ситуации надо избегать. Она, как я уже отметил, может смутить пользователя. Тут есть другое, на мой взгляд, лучшее решение. Если пользователь регистрируется "неумышленно" второй раз, он наверняка вводит тот же логин и e-mail, что и в предыдущий раз. Этим можно воспользоваться для отслеживания повторной регистрации и на странице проверки своих параметров спрашивать пользователя, не он ли регистрировался 20 минут назад?

P.S.:Ненавижу читать длинные тексты, а, тем более, писать их.

спустя 1 час 30 минут [обр] Дмитрий Эсс(0/102)[досье]

Ситуация В.
Пользователь зарегистрировался и, т.к. знает, что e-mail может прийти не сразу, а через пару минут остаётся гулять по сайту или решает прочитать какую-нибуть статью на другом сайте. Проходят эти 10 минут (кстати в этом случае считать количество событий нельзя), он дочитывает статью и проверяет почту. Идёт активизировать свой аккаунт, и... о ужас,введённые им данные неверны.

ИМХО надо в ссылке для активизации аккаунта в письме ещё передавать время регистрации. Если время, прошедшее от регистрации до активизации больше 10-ти минут, то выдавать соответствующее сообщение и делать редирект на форму регистрации. И ещё можно предостеречь о том, что ссылка в письме будет работать только в ближайшие 10 минут, на странице с формой для регистрации.

спустя 24 минуты [обр] Tony(1/52)[досье]

Дмитрий Эсс[досье]
Никто свой аккаунт активизировать не идет. Пользователь просто входит в систему. Вход и есть подтверждением того, что пользователь получил свой пароль на валидное мыло (на почту пользователь в моем случае получает пароль для входа в систему, который потом может сменить). Ссылку для т.н. "активизации" я вообще считаю правилом дурного тона, так как пользователь уже активизировал себя в момент регистрации. Тем более эта ссылка будет раскрывать много "мусорной" информации, такой как время регистрации и др. Пользователь увидит такой текст у себя в почтовике — "Мы вам не доверяем, так как вы можете оказаться плохим дядей. Так что подтвердите регистрацию, пройдя по непонятной и длинной ссылке, которая вам ни о чем не должна сказать.". Не важно, как я напишу, но смысл будет такой.

Однако отмечу, что система с подтверждениями хороша, скажем, на нашем форуме. Или в подписке на новости W3C. Но для широкой массы людей это неудобно.

А пользователей, которые не входили с момента регистрации, скажем, 2 месяца, удаляем с предупреждением по мылу. Ну, тут уже дело техники.

спустя 22 минуты [обр] Дмитрий Эсс(0/102)[досье]
Tony[досье]
Извените, невнимательно читал первое сообщение. Но проблема с ситуацией "В" остаётся открытой. Всё равно пользователь должен ждать e-mail'а. Если ему прийдёт недейстующий пароль, то он будет в жутком замешательстве. Его обманули, а может система не отлажена? Лучше им не доверять, не надёжно. ИМХО надо предупреждать о том, что присланный пароль действует только в ближайшие 10 минут и что надо успеть залогиниться хотя бы 1 раз за это время, как при регистрации, так и в e-mail'е. А можно в пароле шифровать время регистрации... Хотя нет, это бредовая идея.
спустя 22 часа [обр] Tony(1/52)[досье]
Дмитрий Эсс[досье]
А кто сказал, что пароль экспайрится? Аккаунт юзера живет постоянно, пока админ не примет решение о его удалении.
спустя 12 минут [обр] Дмитрий Эсс(0/102)[досье]

Tony[досье]
Вы же сами писали...

Мы сохраняем информацию (не важно как) о том, что пользователь зарегистрировался и храним ее какое-то время (например, 10 минут)

Раз информация о регистрации через 10 минут удаляется, то, соответствено, и пароль становится недейтвительным. Может я чего-то недопонимаю?

спустя 10 минут [обр] Tony(1/52)[досье]

Дмитрий Эсс[досье]
Вы не так поняли. Наверное, я немного непонятно объяснил. "Запоминание" недавней регистрации актуально только для процесса регистрации. То есть, пользователь хоть через 10 лет может зайти в систему. Но если он начнет производить процесс регистрации в то время, когда система помнит, что именно он уже регистрировался, то мы вежливо его предупреждаем, что не надо регистрироваться снова, ждите пароль.

Я же писал не о временном запоминании пользовательских данных, а о запоминании события регистрации:

Мы сохраняем информацию (не важно как) о том, что пользователь зарегистрировался
спустя 3 минуты [обр] Дмитрий Эсс(0/102)[досье]
Tony[досье]
Тогда всё ясно.
Powered by POEM™ Engine Copyright © 2002-2005