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

Тема в разделе "Как сделать...", создана пользователем antiadmin, 7 янв 2009.

Статус темы:
Закрыта.
  1. antiadmin

    antiadmin

    Регистр.:
    24 май 2008
    Сообщения:
    395
    Симпатии:
    23
    Народ, подкиньте плиз идейку, как сделать активацию мыла :)
     
  2. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    antiadmin нравится это.
  3. antiadmin

    antiadmin

    Регистр.:
    24 май 2008
    Сообщения:
    395
    Симпатии:
    23
    я наверное неправильно тему назвал, мне нужен скрипт, который высылает на мыло ключ для подтверждения мыла, при регистрации юзера.
     
  4. heyvany

    heyvany Создатель

    Регистр.:
    24 май 2008
    Сообщения:
    36
    Симпатии:
    13
    В 2х словах. С формы получаешь через POST переменную $email. Шифруешь ее md5 с солью, отправляешь на мыло ссылку такого вида site.ru/a.php?email=your@mail.ru&hash=md5hash
    В a.php делаешь проверку: шифруешь $email полученый через GET с той же солью в md5 и проверяеш с hash. Есть сходится, записываешь в базу.
     
    antiadmin нравится это.
  5. Alek$

    Alek$ Постоялец

    Регистр.:
    24 сен 2008
    Сообщения:
    63
    Симпатии:
    25
    Не саймый надежный вариант, поскольку всякая защита, основанная на незнании кем-то алгоритма - плохая защита. Значительно надежнее использовать следующий алгоритм:
    1) В базе в таблице пользователей создается поля act_key (ключ активации)
    2) При обработке формы регистрации генерируется случайный ключ (для пущей уникальности можно использовать хеш емейла и microtime()). Значение слуайного ключа записывается в базу в поле act_key. Юзеру отсылается мыло со ссылкой http://example.com/activate.php?act_key=activationKey
    3) В базе ищется запись с указанным activationKey и если таковая находится, то поле act_key сбрасывается в ноль и email считается активированным.
    4) Залогиниться юзер может тогда и только тогда, когда у его записи act_key равен нулю (то бишь он активирован).

    Похожие алгоритмы используются в большинстве известных мне движков, а так же неоднократно использовались мною в собственных скриптах.
     
  6. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Хочу дополнить Alek$-а...делаешь таблицу в которой будут ключи ,логин,мыло и время вновь зарегистрированных пользователей,но не подтвердивших письмом свою регистрацию. если пришел кей проверяем его по этой табл ,проверяем время ..не просрочена ссылка..и если все ок пишем юзера в основную таб эту запись трем...высылаем ему второе письмо в котором его логин и пароль(в основной храним хэш пароля)не забываем периодически подчищать эту табличку средствами MySQL..да с помощью этой таб можно организовать блокировку автом регистрации несколько раз например 3 с одного IP ....
     
  7. Alek$

    Alek$ Постоялец

    Регистр.:
    24 сен 2008
    Сообщения:
    63
    Симпатии:
    25
    На самом деле все то же самое можно организовать и при помощи одной таблицы, сэкономив при этом некоторое количество ресурсов.
     
  8. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Не так все просто ,дело в том что столбец act_key будет не оптимизирован тк будет принимать значение длины ключа или 0.. это раз во вторых если делать две таблицы ,то в первой будут хранится чистые юзеры ,проверенные и отсортированные.. да и столбец активации не нужен (на неё ляжет основная нагрузка),а работа с новыми юзерами ,роботами и флудерами ляжет на плечи второй таблички..чистить ее просто. типа
    DELETE FROM `temp_auth` WHERE login_time<DATE_SUB(NOW(),INTERVAL 5 HOUR)
    ну и периодически делать ей OPTIMIZE TABLE
     
  9. Alek$

    Alek$ Постоялец

    Регистр.:
    24 сен 2008
    Сообщения:
    63
    Симпатии:
    25
    то же самое касается и одной таблички. Достаточно правильно расставить индексы и производительность станет достаточно хорошей, но в то же время не будет путаницы с разделением юзеров по двум таблицам, поиску в каждой из ни и т.д. система станет слитной, более простой, и, следовательно, глюкостойкой, что тоже очень важно.
     
  10. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    темп таблица используется только в режиме подтверждения активации по ссылке из письма и планомерно автоматически самоочищается те совершенно автономна и не участвует в процессе идентификации юзеров ..
    учитывая возросший поток спама,проскальзывающего через фильтра отношение между двумя таблицами может достигать 1/10,а то и более ..вот и зачем в одной таблице в которой зарегистрирован один пользователь держать еще 10 кандидатов в депутаты,а потом их удалять и подчищать постоянно накладные расходы...
     
Статус темы:
Закрыта.