Два варианта регистрации пользователей

sage

Новичок
Два варианта регистрации пользователей

Всех с Наступающим! Появились кое-какие мысли по поводу регистрации.
Понятно, что зарегистрированным считается тот, кто прошел по ссылке в письме. А какой должна быть эта ссылка? В голове вертятся 2 варианта.
1) В ссылке содержатся все регистрационные данные, т.е.
/confirm.php?login=Vasya&password=Pupkin
"+"
Не требуется отслеживание посетителей, не подтвердивших своё желание зарегистрироваться. Т.е. мы регистрируем только тех, кто прошел по ссылке, причём данные в табличку пользователей берем из адресной строки
"-"
все данные передаются открыто

2) Имеем табличку не подтвердивших желание зарегистрироваться. В ней содержатся все данные о пользователе и некоторый уникальный ключ, который и отправляем в письме. Пользователь проходит по ссылке, аккаунт активизируется, запись из временной таблички удаляется.
"+"
Нет открытой передачи данных. Все регистрационные данные хранятся на сервере.
"-"
Существование временной таблички и отслеживание не подтвердивших регистрацию.

Понимаю, что отслеживание - не такой уж большой минус. Сделать это - плёвое дело. Но интересуют мнения по первому способу. Короче, кто как делает? Раньше не делал, потому и интересуюсь.
 

white phoenix

Новичок
Пароль передавать ни в коем случае нельзя, лучше всего login + случайные 5 символов которые хранятся в таблице.
 

white phoenix

Новичок
> т.е. ты за использование таблицы. Понятно...
В таблице с пользователями сделай поле `confirm_code`, если оно не пустое, то аккаунт не активирован и в нем хранится код подтверждения.
 

Popoff

popoff.donetsk.ua
У меня два этапа:
1. запрашиваю логин и мыло. Проверяю логин на существование и мыло на допустимость (самым простым регэкспом). Логин на этом этапе вводится только для проверки на существование и передается по мылу только для удобства - чтобы пользователю не пришлось его вводить второй раз на втором этапе. Если пароль существует и мыло правильное, то отправляю на мыло ссылку, в которой содержится логин, мыло и sha1("год@огненной"+СЕКРЕТНАЯ_СТРОКА).
2. Проверяю правильность хеша и прошу ввести все остальные регистрационные данные (пароль, реальное имя и т.п.). Логин считается зарегистрированным только после того, как он прошел второй этап. Если одновременно два пользователя начали регистрацию, то зарегистрируется тот, кто быстрее пройдет второй этап.

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

-~{}~ 31.12.05 18:12:

Об этом способе, я, кстати, вычитал где-то в этом форуме :)
 

Юзер

Новичок
Фанат
Уникальная ссылка выглядит примерно так: login=qwerty&password=zzzzzzz&[email protected]
&approve=c76681e374ff48fc282af35bc9e25007. Аpprove — это md5, завязанная на логин-пароль и какую-нибудь уникальную строку, которую знает только ваш сервер
Пользователь нажал на ссылку. Мы тут же про него вспоминаем (берем информацию о нем из уникальной ссылки, а не из базы), заводим его в базе
как из ссылки, завернутой в md5, получить email?
 

SiMM

Новичок
> как из ссылки, завернутой в md5, получить email?
А зачем? Этого не требуется.
 

Юзер

Новичок
SiMM
ну а как тогда? если в ссылке содержится Логин, пароль и мыло.. как проверять что логин не занят?
 

SiMM

Новичок
> как проверять что логин не занят?
А какие с этим могут быть проблемы? Да хоть SELECT'ом
 

Фанат

oncle terrible
Команда форума
как проверять что логин не занят?
хороший вопрос, кстати.
за него можно простить тупость вопроса про то, как достать из ссылки емейл.

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

Юзер

Новичок
извиняюсь.. я ступил.. думал что это: login=qwerty&password=zzzzzzz&[email protected]
завернуто в md5 и выглядит в письме как: approve=c76681e374ff48fc282af35bc9e25007

а оказывается это одна ссылка..
 

kpuk

Новичок
я неного не понял вот чего.. если мы делаем БЕЗ базы, как указано на http://spectator.ru/technology/web-building/user_registration
Юзер получает в письме ссылку для активаци,
http://web/[email protected]&code=sdf54sdf654sdffd4f5s6

то как мы узнаем что он это он? Код указанный в сылке проверяется что с чем? Так можно просто кому-нить указывать разные майлы и писать коды из головы (или вобще копировать) и подписать таким образом кучу народа!

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

SiMM

Новичок
> Код указанный в сылке проверяется что с чем?
PHP:
if (md5($_GET['login'].$_GET['password'].$_GET['email'].$salt) == $_GET['approve']) { // approved
  // если в базе нет такого логина, регистрируем пользователя, иначе - ф топку
} else { // not approved
  // попытка "левой" регистрации
}
 

kpuk

Новичок
да но на спектаторе говорится что у нас не будет временной базы и вообще на этапе первичного занесения данных в базу заносить не будем .... вот я и озадачился.

Там говорится что в НАЧАЛЕ мы проверяем уникальность логина и только потом посылаем почту, при этом в базу ничего не добовляется:
  • В базу пользователей при этом абсолютно ничего не пишется.
а как потом - после ссылки? после ее "нажания" что будет сравниваться? и как? Что : это тот уникальный код, а вот как???
 

SiMM

Новичок
> да но на спектаторе говорится что у нас не будет временной базы и вообще на этапе первичного занесения данных в базу заносить не будем
Она и не нужна.

> Там говорится что в НАЧАЛЕ мы проверяем уникальность логина и только потом посылаем почту
Там запрещается делать это ДВА раза?

> а как потом - после ссылки?
Выше приведён код, куда уж дальше-то разжёвывать...
 
Сверху