Подтверждение регистрации.

Рома

был тут
Подтверждение регистрации.

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

Ссылка типа http://yyy.ru/confirmregistration.phtml?login=mylogin
Чтобы не дать юзверю повода поэкспериментировать с адресной строкой решил закодировать логин, только вот urlencode не помогает, тк надо кодировать все символы, а при использовании md5 возникает вопрос как сравнить логин с записью в базе.

Без кодирования делал просто "update user SET status='1' where login='$login'"
код типа "update ... where md5(login)='$login'" не работает.

Может есть какие-нибудь другие методы решения проблемы?
 

Aville

Guest
ВАРИАНТ №2

- сохрани в таблице stamp он достаточно уникальный для эксперементов.

- дай такую ссылку с этим stamp

- при сверке проставь login если сходиться

я так думаю, проще :)
 

Aville

Guest
Во, а так?

PHP:
// генерим ключ подтверждения, посылаем письмо и заносим в базу с флагом "неактивно" (поле active)
srand(time());
$key = md5(uniqid(rand()));

$key - то что надо!
 

Рома

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

crow

Guest
зря, по-другому - никак!
кстати я делал такую авторизацию для восстановления забытого пароля... пользователь вводит емыло, оно и текущая сессия заносяться в отдельную таблицу, а ему на этот адрес высылается ссылка, в которой его мыло и айдишник сессии, как только мы заселектили совпадающее мыло и айдишник - сразу удаляем эту запись и логируем пользователя, вот так...
 

Jin

Guest
2crow
Вот только не пойму зачем Тебе такой наворот при потере пасса ? Нельзя сразу высылать пасс на указанный майл, если он найден в б.д. ? (Предпологается что майлы уникальны и свой майл юзер не забудет)
 

OlegS

Guest
Функция crypt
В доке есть хороший пример ее использования.
 

crow

Guest
2Jin
В том то и дело, что в нормальных системах управления пользователями пароли шифруются в одну сторону (crypt) по алгоритму DES, который расшифровать невозможно!
кроме того, если генерить пароль и высылать его, то это будет абсолютно бессмысленный набор символов(восновном цифры - md5), который пользователь не запомнит, и для него будет геморойно, его набирать (это уже юзабилити). Поэтому лучше выслать ссылку, по которой юзер сразу слогируется и изменит себе пароль сам... кроме того, авторизация через емыло - получается дополнительной фичей, т.о. что пароль помнить вообще не надо!
 

Рома

был тут
Автор оригинала: OlegS
Функция crypt
В доке есть хороший пример ее использования.
Угу только, помоему, пофигу что юзать в этом случае md5 или crypt, только вот последняя у меня, на локалхосте, не работает... выдается ошибка типа "эта фия не поддерживается в данной компиляции пхп" или что-то в этом роде, НО НЕ "кол ту андефайнед фанкшин"...

Вобщем ладно, сделаю еще одно поле и буду писать туда зашифрованный логин, может потом еще пригодится...
 

Doomer

Guest
Re: Подтверждение регистрации.

Автор оригинала: Рома
Может есть какие-нибудь другие методы решения проблемы?
Посмотри функцию SQL PASS() - она кодирует строку на стороне mySQL, может поможет расскажи потом.
 

crow

Guest
Re: Re: Подтверждение регистрации.

insert into Auth (login,pwd,grp) values('$login',PASSWORD('$password'),'user')

где $login и $password соотвествующие строки логин и пароль

но расшифровать после этого пароль нельзя! его можно только проверить закодировав пароль и сравнив шифрованые пароли...
 

Alien

Новичок
Создай другую таблицу в которой хранятся данные недопрошедших регистрацию (чисть ее раз в N дней).

Когда человек нажмет ссылку -> запись из промеж. таблицы стирай.
 

Рома

был тут
Автор оригинала: Альен
Создай другую таблицу в которой хранятся данные недопрошедших регистрацию (чисть ее раз в N дней).
Когда человек нажмет ссылку -> запись из промеж. таблицы стирай.
Помоему, это самый удобный вариант, так и сделаю...

спасибо
 
Сверху