Подтвердить регистрацию по email

dirol

Новичок
Подтвердить регистрацию по email

Есть форма регистрации, в которой пользователь вводит свои данные:
email и пароль.

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

Как вообще подобное осуществляется?
 

Sluggard

Новичок
Генерируется код активации сохраняется в БД и высылается на email. Account помечается как неактивный. Создается еще одна страница с формой для ввода кода активации. Следует позаботиться о возможности повторной отсылки кода активации.

Что тебе мешает зарегистрироваться на сервисах с подобной регистрацией и все посмотреть?
 

dirol

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

Есть основная таблица:
id | email | password

Именно туда записываются данные после регистрации.
Планирую добавить еще один столбец (что-то вроде `confirm`)
Т.е., если в `confirm` содержиться 1, значит аккаунт активирован, если `0`, то нет.

После регистрации, пользователю отправляется письмо, где есть ссылка вида:
site1.ru/[email protected]

А в этом скрипте код, который содержит запрос к базе UPDATE с изменением колонки `confirm` на 1 в той строке, где email = [email protected].

Есть ли это правильно?
 

Духовность™

Продвинутый новичок
- Вводим данные. Отправляем запрос.
- Поля заполнены правильно - пишем во временную таблицу эти данные + записываем $hash - результат работы md5() функции от строки

PHP:
$hash = md5($user_mail.$secret_string);
где
$user_mail - емейл пользователя.
$secret_string - секретная строка, определенная в сценарии.

отправляем письмо с уникальной ссылкой, где присутствуют два параметра:

user_mail=...&hash=...

где

user_mail - емейл пользователя.
hash - $hash


пользователь переходя по ссылке попадает на сайт. на сайте мы делаем запрос вида
Код:
select 
    id 
from 
    temp 
where 
    user_mail = $_GET['user_mail'] 
AND
   hash = MD5(CONCAT($_GET['user_mail'], $secret_string))
если при селекте получили значение, то регистрация подтверждена. далее заносим данные в основную таблицу.
 

rotoZOOM

ACM maniac
dirol нет не правильно. Так как тогда нет смысла в подтверждении регистрации, любой сможет зарегистрироваться и потом в url строке подставить site1.ru/[email protected]
Нужен именно код активации, как сказал Sluggard.
Код активации генерируется при регистрации аккаунта. Вписывается в базу отдельным полем. А ссылка в e-mail отсылается вида:
site1.ru/confirm.php?code=AB6543FA7E... и т.д
далее ищешь код активации в базе и если находишь, то активируешь аккаунт.
Еще иногда полезно сделать дополнительное поле, в которое записываешь время регистрации. И по истечению некоторого периода (например 1 сутки) неактивированные аккаунты удаляются по крону.

-~{}~ 24.04.08 16:07:

Sluggard а если я зарегистрирую тебя на ежечасную рассылку новостей с порно сайта, указав в регистрации твой e-mail и поставив везде галочки, где тока можно? :)) Ну и т.д. варианты придумать можешь сам.
 

Sluggard

Новичок
rotoZOOM
А порнушка, надеюсь, хоть качественная? ;)

Регистрацию "через email" обычно делают для уверенности, что ввели валидный email, прчем свой. Я старался dirol натолкнуть на размышления, достигает ли он своим алгоритмом этой цели.
 

dirol

Новичок
Sluggard, мне необходимо, чтобы я, как владелец проекта, был уверен, что по тому e-mail, который указан в системе "сидел" именно тот человек, за которого себя выдает пользователь...

Чтобы не было приколов, типа [email protected] и т.д.

-~{}~ 25.04.08 11:37:

triumvirat
Не совсем понял эту конструкцию:
$hash = md5($user_mail.$secret_string);


$hash = md5($user_mail) - понятно.

А что за $secret_string?
 

akd

dive now, work later
Команда форума
мда.

dirol, перечитай все ответы внимательно.
 

dirol

Новичок
Автор оригинала: akd
мда.

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

kruglov

Новичок
dirol
простой беспорядочный набор символов или что
Программист должен думать. Делать выводы. Вы выводы какие-то делаете кроме "как на форуме мне умные люди посоветуют, так и сделаю"?

Зачем нужна секретная строка? Кому она должна быть известна? Ответьте и делайте выводы, какая она должна быть.
 
Сверху