За последние 24 часа нас посетили 16468 программистов и 1642 робота. Сейчас ищут 1087 программистов ...

Забыли пароль!

Тема в разделе "Прочие вопросы по PHP", создана пользователем NIKO, 6 авг 2006.

  1. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    Ребят подкиньте идею как сделать систему "Забыли Пароль"?
     
  2. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Как везде.
    Юзеру посылается контрольное письмо, он переходит по ссылке, указанной в этом письме и потом его пароль меняется и высылается ему новый пароль
     
  3. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    НЕ Я Хочу знать где хранить гинерированный пароль, а то елси в файле
    например
    $file = $_POST['userid'].".txt";
    $file = file($file);
    if($_POST['newpass'] == $file[0]){
    $sql = "UPDATE bla bla;";
    $result = my_sql("$sql");
    echo "Ваш пароль bla bla";
    }
    В этом случие не делает, значит не совподение есть!
     
  4. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    Может надо с trim() сделать?
     
  5. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    хранить пароли в открытом виде не стоит. лучше хранить какой-нить md5() от него.
     
  6. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    Потом сравнивать md5($_POST['newpass']) == $file[0] ?
     
  7. Петр

    Петр Активный пользователь

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    NIKO
    Да, только $_POST['newpass'] обработай обязательно.
     
  8. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    так пойдет md5(trim($_POST['newpass'])) ?
     
  9. Петр

    Петр Активный пользователь

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    Что от пользователя получаешь, все через htmlspecialchars(stripslashes ($var)) пропускать. А то, что слева и справа будут удалены пробелы, настоящих гуру-хакеров не остановит.
     
  10. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    а на хрен htmlspecialchars , что в $_POST['newpass'] может быть <b>kfjkeds94u</b> :)
     
  11. Петр

    Петр Активный пользователь

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    В принципе, если пароль не будет нигде выводится, и от него будет браться хешкод, то не надо. Но будет прикольно, если у тебя сработает аlert (), когда ты пользователю на мыло пришлешь его пароль, перед тем, как его хешировать, разумеется.
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    md5() пофиг что придет.
     
  13. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    Как пофиг...если будет askdhkasl4551da1 и $_POST['newpass'] = sdahsaxcjhsa6200 будет несовподение!
     
  14. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    Постойте если мд5 будет как я сделаю INSERT INTO ? :) гы..
     
  15. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    NIKO

    делаешь так:

    1. введенный пароль в md5();
    2. хранишь этот хеш где угодно
    3. при ситуации "забыли пароль" генерируешь новый пароль и отсылаешь его на мыло.
    4. при авторизации сравниваешь только md5()

    что не понятного-то?
     
  16. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    ааа...ладно понял..сапишу в базу то что он написал!!
     
  17. NIKO

    NIKO Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    ВСЕ ПОНЯТНО! Thanks. :)
     
  18. X-Cray

    X-Cray Активный пользователь

    С нами с:
    10 июл 2006
    Сообщения:
    255
    Симпатии:
    0
    Адрес:
    Москва
    ИМХО, все пароли надо бросать в MD5, тогда любая строка больше трех символов (а меньше - это уже не пароль) будет безопасным 32б-хешем, да и сравнивать проще...

    А при "забыл пароль" предлагать только вводить новый, ссылаясь на то, что в базе он зашифрован без возможности возврата.

    htmlspecialchars и trim к паролю лучше не применять... кто запрещал пользователю пароль с пробелами?

    Т.ч.

    PHP:
    1. $pas = md5($_POST['pass']);
    2.  //или md5(stripslashes($_POST['pass'])), если в php.ini включены Magic_quotes
    3. $sql="UPDATE `...` SET `pass` = '".$pas."' WHERE `userid` = '".$id."';";