ФорумПрограммированиеPHP для идиотов → Активация аккаунта

Активация аккаунта

  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz Дек. 16, 2009, 5:18 п.п.

    никак не получается - что именно?
    вобще понятна схема активации пользователя?
    все умрут, а я изумруд
  • PyMbIH

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz Дек. 16, 2009, 5:29 п.п., спустя 10 минут 53 секунды

    Схема как это должно работать понятна, а вот как её реализовать на php не понятно… ибо мало и знаний и опыта.
    Т.е я понимаю, что нужно создать:
    1) некоторый уникальный идентификатор для каждого пользователя и отправить ему на почту ссылку и при переходе по этой ссылке сделат UPDATE в БД нужного значения
    2) создать временную метку которая определяет время жизни ссылки и механизм проверки этого времени и если значение в БД не изменилось за указанное время - удалить этот аккаунт из БД
    Примерно так..
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz Дек. 16, 2009, 5:31 п.п., спустя 1 минуту 38 секунд

    так а что не получается?
    может (скорее всего) какаято ошибка вылетает но ты её не видиш
    убери error_reporting(0);
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Дек. 16, 2009, 5:31 п.п., спустя 32 секунды


    Схема как это должно работать понятна, а вот как её реализовать на php не понятно… ибо мало и знаний и опыта.
    Т.е я понимаю, что нужно создать:
    1) некоторый уникальный идентификатор для каждого пользователя и отправить ему на почту ссылку и при переходе по этой ссылке сделат UPDATE в БД нужного значения
    2) создать временную метку которая определяет время жизни ссылки и механизм проверки этого времени и если значение в БД не изменилось за указанное время - удалить этот аккаунт из БД
    Примерно так..
    все верно! В ПУтЬ!
    Сапожник без сапог
  • PyMbIH

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz Дек. 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();

  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz Дек. 16, 2009, 6:07 п.п., спустя 23 часа 56 минут 32 секунды

    код генерировать надо с помощью
    uniqid()
    все умрут, а я изумруд
  • PyMbIH

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz Дек. 16, 2009, 6:12 п.п., спустя 5 минут 22 секунды


    код генерировать надо с помощью
    uniqid()


    Если не трудно, поподробнее :)
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz Дек. 16, 2009, 6:16 п.п., спустя 3 минуты 3 секунды

    на ссылку нажмми
    Спустя 70 сек.
    когда сгенерили юник_айди - записали в базу юзеру, что ему присвоен такой-то код
    затем отправили ему мыло с ссылкой, пепейдя по которой сравнивается код и ставится флаг активации
    все умрут, а я изумруд
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Дек. 16, 2009, 6:40 п.п., спустя 24 минуты 10 секунд


    на ссылку нажмми
    Спустя 70 сек.
    когда сгенерили юник_айди - записали в базу юзеру, что ему присвоен такой-то код
    затем отправили ему мыло с ссылкой, пепейдя по которой сравнивается код и ставится флаг активации
    флаг в студию!
    Сапожник без сапог
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz Дек. 16, 2009, 6:44 п.п., спустя 4 минуты 36 секунд

    *не нужен*
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Дек. 16, 2009, 6:46 п.п., спустя 1 минуту 49 секунд


    код генерировать надо с помощью
    uniqid()

    // better, difficult to guess
    $better_token = md5(uniqid(mt_rand(), true));


    вот это кстати получше будет :)) "пожестче" так сказать, хотя мд5 хуй угадаешь с лету =))
    Сапожник без сапог
  • PyMbIH

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz Дек. 16, 2009, 6:50 п.п., спустя 3 минуты 38 секунд


    на ссылку нажмми
    Спустя 70 сек.
    когда сгенерили юник_айди - записали в базу юзеру, что ему присвоен такой-то код
    затем отправили ему мыло с ссылкой, пепейдя по которой сравнивается код и ставится флаг активации

    Т.е имеет смысл создать дополнительную таблицу для хранения временных данных используемых при активации?
    И если можно на моем примере покажите как использовать uniqid(), а то я чет не до конца понял как это должно выглядеть…
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Дек. 16, 2009, 6:51 п.п., спустя 1 минуту 17 секунд



    на ссылку нажмми
    Спустя 70 сек.
    когда сгенерили юник_айди - записали в базу юзеру, что ему присвоен такой-то код
    затем отправили ему мыло с ссылкой, пепейдя по которой сравнивается код и ставится флаг активации

    Т.е имеет смысл создать дополнительную таблицу для хранения временных данных используемых при активации?
    И если можно на моем примере покажите как использовать uniqid(), а то я чет не до конца понял как это должно выглядеть…
    столбец в базе пользоватей
    Сапожник без сапог
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz Дек. 16, 2009, 10:35 п.п., спустя 3 часа 44 минуты 11 секунд

    md5($this->_time.$this->_params['pass'].uniqid(mt_rand(), 1)).uniqid();
    Еще круче :)
    Спустя 71 сек.
    6ccc763701c9204f3fbc4cb6739009d34b2932b6c476a
  • PyMbIH

    Сообщения: 33 Репутация: N Группа: Кто попало

    Spritz Дек. 16, 2009, 11:01 п.п., спустя 25 минут 58 секунд

    А можно на моем примере покажите как использовать uniqid(), а то я чет не до конца понял как это должно выглядеть…

Пожалуйста, авторизуйтесь, чтобы написать комментарий!