Помогите сделать активацию мыла

Статус
В этой теме нельзя размещать новые ответы.

antiadmin

Местный житель
Регистрация
24 Май 2008
Сообщения
395
Реакции
24
Народ, подкиньте плиз идейку, как сделать активацию мыла :)
 
я наверное неправильно тему назвал, мне нужен скрипт, который высылает на мыло ключ для подтверждения мыла, при регистрации юзера.
 
В 2х словах. С формы получаешь через POST переменную $email. Шифруешь ее md5 с солью, отправляешь на мыло ссылку такого вида site.ru/a.php?email=your@mail.ru&hash=md5hash
В a.php делаешь проверку: шифруешь $email полученый через GET с той же солью в md5 и проверяеш с hash. Есть сходится, записываешь в базу.
 
В 2х словах. С формы получаешь через POST переменную $email. Шифруешь ее md5 с солью, отправляешь на мыло ссылку такого вида site.ru/a.php?email=your@mail.ru&hash=md5hash
В a.php делаешь проверку: шифруешь $email полученый через GET с той же солью в md5 и проверяеш с hash. Есть сходится, записываешь в базу.
Не саймый надежный вариант, поскольку всякая защита, основанная на незнании кем-то алгоритма - плохая защита. Значительно надежнее использовать следующий алгоритм:
1) В базе в таблице пользователей создается поля act_key (ключ активации)
2) При обработке формы регистрации генерируется случайный ключ (для пущей уникальности можно использовать хеш емейла и microtime()). Значение слуайного ключа записывается в базу в поле act_key. Юзеру отсылается мыло со ссылкой Для просмотра ссылки Войди или Зарегистрируйся
3) В базе ищется запись с указанным activationKey и если таковая находится, то поле act_key сбрасывается в ноль и email считается активированным.
4) Залогиниться юзер может тогда и только тогда, когда у его записи act_key равен нулю (то бишь он активирован).

Похожие алгоритмы используются в большинстве известных мне движков, а так же неоднократно использовались мною в собственных скриптах.
 
Хочу дополнить Alek$-а...делаешь таблицу в которой будут ключи ,логин,мыло и время вновь зарегистрированных пользователей,но не подтвердивших письмом свою регистрацию. если пришел кей проверяем его по этой табл ,проверяем время ..не просрочена ссылка..и если все ок пишем юзера в основную таб эту запись трем...высылаем ему второе письмо в котором его логин и пароль(в основной храним хэш пароля)не забываем периодически подчищать эту табличку средствами MySQL..да с помощью этой таб можно организовать блокировку автом регистрации несколько раз например 3 с одного IP ....
 
На самом деле все то же самое можно организовать и при помощи одной таблицы, сэкономив при этом некоторое количество ресурсов.
 
Не так все просто ,дело в том что столбец act_key будет не оптимизирован тк будет принимать значение длины ключа или 0.. это раз во вторых если делать две таблицы ,то в первой будут хранится чистые юзеры ,проверенные и отсортированные.. да и столбец активации не нужен (на неё ляжет основная нагрузка),а работа с новыми юзерами ,роботами и флудерами ляжет на плечи второй таблички..чистить ее просто. типа
DELETE FROM `temp_auth` WHERE login_time<DATE_SUB(NOW(),INTERVAL 5 HOUR)
ну и периодически делать ей OPTIMIZE TABLE
 
то же самое касается и одной таблички. Достаточно правильно расставить индексы и производительность станет достаточно хорошей, но в то же время не будет путаницы с разделением юзеров по двум таблицам, поиску в каждой из ни и т.д. система станет слитной, более простой, и, следовательно, глюкостойкой, что тоже очень важно.
 
темп таблица используется только в режиме подтверждения активации по ссылке из письма и планомерно автоматически самоочищается те совершенно автономна и не участвует в процессе идентификации юзеров ..
учитывая возросший поток спама,проскальзывающего через фильтра отношение между двумя таблицами может достигать 1/10,а то и более ..вот и зачем в одной таблице в которой зарегистрирован один пользователь держать еще 10 кандидатов в депутаты,а потом их удалять и подчищать постоянно накладные расходы...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху