Ответы:
Пусть будет отдельная таблица, в которой будут хранится пары ключ-меил. Эти записи появляются при регистрации и удаляются, когда юзер задействует код или по прошествии времени, например, суток. Типо неуспели подтвердить мыло.
Мне кажется вполне оправданный подход, но я не спец по БД.
Новая таблица совершенно ни к чему, обычно просто добавляют новый столбец в таблицу users (например, actcode). Если в нём ничего нет, значит, e-mail уже подтверждён. А сразу при регистрации туда пишем рандомный код, который и надо будет ввести юзеру (или нажать ссылку с указанным этим кодом, которая пришла ему на мыло).
А теперь внимательно, правильный ответ. Ни в какой базе ничего специального создавать не нужно. Делаем так:
1. Пользователь вводит капчу и емейл на странице 1.
2. Если капча прошла и емейл прошел по маске, страница 1 генерит письмо со ссылкой и посылает на указанный емейл. Ссылка содержит адрес страницы 2 и параметры типа ?email={указанный емейл}&code={md5 от емейла с секретным ключом сайта}
3. Пользователь, получив письмо, тыркает в ссылку и попадает на страницу 2. Страница 2 получает в качестве параметров емейл и код. Берет емейл, снова вычисляет md5 от емейла с секретным ключом и сравнивает с тем кодом, что пришел от пользователя. Если совпало - все, емейл верифицирован, запоминаем в сессии и перебрасываем пользователя на страницу, где он уже заполнит имя, пароль, и всякое другое. Заполнил, все проверили, завели в базе нового пользователя. Welcome to machine.
2crimaniak: да, это тоже правильный способ, отличие лишь в том, что зная секретный ключ, бот может сам легко и непринуждённо активировать свои fake-emailы. Как такое возможно ? Очень просто. Если ставится скачанный форум из дистибутива, то этот код может быть одним и тем же у всех дистрибутивов. Умный форум, конечно же, должен этот секретный код задавать рандомно при установке.
>Epsiloncool
>2crimaniak: да, это тоже правильный способ, отличие лишь в том, что зная секретный ключ, бот может сам легко и непринуждённо активировать свои fake-emailы. Как такое возможно ? Очень просто. Если ставится скачанный форум из дистибутива, то этот код может быть одним и тем же у всех дистрибутивов. Умный форум, конечно же, должен этот секретный код задавать рандомно при установке.
Проблема с накапливающимися неактивированными аккаунтами решается довольно просто
15 лет назад