Форум → Программирование → PHP для идиотов → Активация аккаунта
Активация аккаунта
-
Дек. 16, 2009, 5:29 п.п., спустя 10 минут 53 секунды
Схема как это должно работать понятна, а вот как её реализовать на php не понятно… ибо мало и знаний и опыта.
Т.е я понимаю, что нужно создать:
1) некоторый уникальный идентификатор для каждого пользователя и отправить ему на почту ссылку и при переходе по этой ссылке сделат UPDATE в БД нужного значения
2) создать временную метку которая определяет время жизни ссылки и механизм проверки этого времени и если значение в БД не изменилось за указанное время - удалить этот аккаунт из БД
Примерно так.. -
Дек. 16, 2009, 5:31 п.п., спустя 1 минуту 38 секунд
так а что не получается?
может (скорее всего) какаято ошибка вылетает но ты её не видиш
убери error_reporting(0); -
Дек. 16, 2009, 5:31 п.п., спустя 32 секунды
все верно! В ПУтЬ!
Схема как это должно работать понятна, а вот как её реализовать на php не понятно… ибо мало и знаний и опыта.
Т.е я понимаю, что нужно создать:
1) некоторый уникальный идентификатор для каждого пользователя и отправить ему на почту ссылку и при переходе по этой ссылке сделат UPDATE в БД нужного значения
2) создать временную метку которая определяет время жизни ссылки и механизм проверки этого времени и если значение в БД не изменилось за указанное время - удалить этот аккаунт из БД
Примерно так..Сапожник без сапог -
Дек. 16, 2009, 6:11 п.п., спустя 39 минут 13 секунд
все верно! В ПУтЬ!
Так вот именно с этим и возникают проблемы из-за недостаточных знаний ^^
Вот как я это вижу: (поправьте меня где я не прав пожалуйста)
При успешной регистрации мы формируем идентификатор…допустим таким вот образом:
//Выдергиваем логин пользователя из email
$email_login=explode("@",$email);
//Формируем уникальный идентификатор
$checkSum=base64_encode(substr($name,0,3).$email_login[0]);
//Получаем временную метку
$date=time();
//Сообщение зарегистрированному пользователю
$message="Сегодня в ".date("d.m.Y",$date)."на сайте Site.ru был
зарегистрирован
пользователь с вашим email. Поэтому вы получили данное письмо. Если вы не
регистрировались на нашем сайте, то попросту удалите данное письмо, а если
же это были вы то перейдите по нижеприведённой ссылке.
Аккаунт будет действителен до
".date("d.m.Y",mktime(0,0,0,date("d",$date)+4,date("m",$date),date("Y",$date))).",
после чего аккаунт зарегистрировать будет невозможно !
Ссылка для активации:<a
href=\"http://www.site.ru/Register/activate.php?checkSum=".$checkSum."&email=".$email."\">Перейти</a>";
//Отправляем пользователю
@mail($email,"Активация аккаунта",$message,"Content-Type: text/html;
charset=windows-1251","From:[email protected]");
@mysql_close(); -
Дек. 16, 2009, 6:07 п.п., спустя 23 часа 56 минут 32 секунды
код генерировать надо с помощьюuniqid()
все умрут, а я изумруд -
Дек. 16, 2009, 6:12 п.п., спустя 5 минут 22 секунды
код генерировать надо с помощьюuniqid()
Если не трудно, поподробнее :) -
Дек. 16, 2009, 6:16 п.п., спустя 3 минуты 3 секунды
на ссылку нажммиСпустя 70 сек.когда сгенерили юник_айди - записали в базу юзеру, что ему присвоен такой-то код
затем отправили ему мыло с ссылкой, пепейдя по которой сравнивается код и ставится флаг активациивсе умрут, а я изумруд -
Дек. 16, 2009, 6:40 п.п., спустя 24 минуты 10 секунд
флаг в студию!
на ссылку нажммиСпустя 70 сек.когда сгенерили юник_айди - записали в базу юзеру, что ему присвоен такой-то код
затем отправили ему мыло с ссылкой, пепейдя по которой сравнивается код и ставится флаг активацииСапожник без сапог -
-
Дек. 16, 2009, 6:46 п.п., спустя 1 минуту 49 секунд
код генерировать надо с помощьюuniqid()
// better, difficult to guess
$better_token = md5(uniqid(mt_rand(), true));
вот это кстати получше будет :)) "пожестче" так сказать, хотя мд5 хуй угадаешь с лету =))Сапожник без сапог -
Дек. 16, 2009, 6:50 п.п., спустя 3 минуты 38 секунд
на ссылку нажммиСпустя 70 сек.когда сгенерили юник_айди - записали в базу юзеру, что ему присвоен такой-то код
затем отправили ему мыло с ссылкой, пепейдя по которой сравнивается код и ставится флаг активации
Т.е имеет смысл создать дополнительную таблицу для хранения временных данных используемых при активации?
И если можно на моем примере покажите как использовать uniqid(), а то я чет не до конца понял как это должно выглядеть… -
Дек. 16, 2009, 6:51 п.п., спустя 1 минуту 17 секунд
столбец в базе пользоватей
на ссылку нажммиСпустя 70 сек.когда сгенерили юник_айди - записали в базу юзеру, что ему присвоен такой-то код
затем отправили ему мыло с ссылкой, пепейдя по которой сравнивается код и ставится флаг активации
Т.е имеет смысл создать дополнительную таблицу для хранения временных данных используемых при активации?
И если можно на моем примере покажите как использовать uniqid(), а то я чет не до конца понял как это должно выглядеть…Сапожник без сапог -
Дек. 16, 2009, 10:35 п.п., спустя 3 часа 44 минуты 11 секунд
Еще круче :)md5($this->_time.$this->_params['pass'].uniqid(mt_rand(), 1)).uniqid();
Спустя 71 сек.6ccc763701c9204f3fbc4cb6739009d34b2932b6c476a -
Дек. 16, 2009, 11:01 п.п., спустя 25 минут 58 секунд
А можно на моем примере покажите как использовать uniqid(), а то я чет не до конца понял как это должно выглядеть…
Пожалуйста, авторизуйтесь, чтобы написать комментарий!