Уважаемые читатели сайта Ajaxs.ru

Очень рад что вы зашли на мой сайт. Надеюсь, Вы сможете найти здесь для себя полезную информацию. Зарегистрировавшись на сайте вы получаете ряд преимуществ:
1. При комментировании Вам не нужно вводить имя и капчу с картинки
2. Вы можете получать уведомления на Email к интерисующим вас урокам
3. Вы можете редактировать свои комментарии

Вход на сайт


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



Восстановление пароля


Войти на сайт

Зарегистрироваться

Главная / Уроки по PHP / Просмотр урока

     

Создание сайтов


Вам нужен небольшой сайт или просто хотите доработать уже существующий? | Подробнее

Восстановление забытого пароля

Добрый день уважаемые пользователи. Многие из нас зарегистрированы на различных сайтах. И  наверняка вам знакома ситуация, когда вы забывали пароль для авторизации на этом сайте.  Если  восстановить пароль было невозможно, то, скорее всего вы не захотите регистрироваться заново и  просто забудете про этот сайт. Так же могут поступить пользователи и на вашем сайте. Поэтому если на вашем сайте создана регистрация пользователей, то очень желательно чтобы была функция восстановления пароля. В данном уроке мы и будем говорить о восстановления забытого пароля. Новый пароль будет случайно генерироваться из набора цифр и букв латинского алфавита, а затем высылаться на E-mail. Этот урок является дополнением к уроку Создание регистрации пользователей на сайте.
Для этого мы создадим файл password.php, в котором будет содержаться форма для ввода логина и  E-mail-а:

<table>
      <form
method="POST">
      <tr>
      <td>
Логин:</td>
      <td><input
type="text" size="20" name="login"></td>
      </tr>
      <tr>
      <td>
E-mail:</td>
      <td><input
type="text" size="20" name="email"></td>
      </tr>
      <tr>
       <td></td>
      <td
colspan="2">
<input
type="submit" value="Восстановить пароль" name="submit"></td>
      </tr>
     <br>
      </form>
</table>

Когда пользователь введет эти данные и нажмет кнопку "Восстановить пароль", мы попадем на эту же страницу, на которой будет проверяться существование такого пользователя в базе. В самом начале документа мы соединяемся с базой данных:

<?php  include_once('bd.php'); ?>

Затем идет код, который будет генерировать наш новый пароль:

<?php
if (isset($_POST['submit'])){    
    $login = $_POST['login'];
    $email = $_POST['email'];
               
    if (empty($login)){
        echo "Введите логин!";
    }
    elseif (empty($email)){
        echo "Введите e-mail!";
    }
   else{
        $resultat = mysql_query("SELECT * FROM users WHERE login = '$login' AND email = '$email'");
        $array = mysql_fetch_array($resultat);
        if (empty($array)){
            echo 'Ошибка! Такого пользователя не существует';
        }
        elseif (mysql_num_rows($resultat) > 0){
        $chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";
        $max=10;
        $size=StrLen($chars)-1;
        $password=null;
                                              
        while($max--) {
              $password.=$chars[rand(0,$size)];
        }
        $newmdPassword = md5($password);
        $title = 'Востановления пароля пользователю '.$login.' для сайта Site.ru!';
        $letter = 'Вы запросили восстановление пароля для аккаунта '.$login.' на сайте Site.ru \r\nВаш новый пароль: '.$password.'\r\nС уважением админестрация сайта Site.ru';
// Отправляем письмо
        if (mail($email, $title, $letter, "Content-type:text/plain; Charset=windows-1251\r\n")) {
             mysql_query("UPDATE users SET password = '$newmdPassword' WHERE login = '$login'  AND email = '$email'");
        echo 'Новый пароль отправлен на ваш e-mail!<br><a ref="index.php">Главная страница</a>';
         }
      }                             
   }
}
mysql_close();
?>

Рассмотрим данный код более подробно. В самом начале мы проверяем, нажата ли кнопка "Восстановить пароль" и введен ли логин и E-mail. Если все данные существуют, то мы проверяем, есть ли такой пользователь, если нет, то выдаем ошибку «Такого пользователя не существует». Если пользователь есть в базе, то мы из набора символов содержащихся в переменной $chars составляем новый пароль из 10 символов. Для этого мы используем цикл, в котором при помощи функции rand случайно выбираются символы из переменной $chars и заносятся в переменную $password. Теперь нужно отправить новый пароль пользователю на E-mail и добавить его в базу. Но в базе пароли у нас хранятся в зашифрованном виде, поэтому мы так же шифруем пароль $newmdPassword = md5($password); .  Теперь высылаем новый пароль пользователю. Если отправка письма была удачной, то мы обновляем данные в базе и сообщаем об успешном восстановлении пароля.

Ну, вот теперь пользователи вашего сайта с легкостью могут восстановить свой пароль.

Автор: Евгений Бочкарев и Кушнир Александр Урок добавлен: 15 Ноября 2010 в 20:41 Просмотров: 27331

Условия копирования материалов сайта

Все комментарии

Посмотреть предыдущие комментарии (28)

#29 Евгений 17-01-2014 в 11:45
Рассказывайте что не получается?
#30 Анна 21-01-2014 в 22:09
Евгений, здравствуйте! Не получается ничего, по причине того, что я в этом не разбираюсь. Ситуация такая-забыла пароль на одном сайте, от администрации ответа получить не могу, на почту уведомление о смене пароля не приходит, хотя постоянно отправляю себе эту форму с сайта, в папку спама на почте тоже ничего не приходит.
#31 Евгений 22-01-2014 в 10:17
Анна, к сожалению, в данной ситуации ничем не могу помочь. Если у Вас почта на mail, то бывают проблемы с приходом писем с сайтов. Тут может помочь только администратор того сайта.
#32 иван 23-03-2014 в 14:38
такая же фигня пароль не приходит
#33 Евгений 30-03-2014 в 17:46
Здравствуйте! Ввожу логин и почту пользователя который есть в базе, а меня просит Введите логин!
#34 Серый 27-06-2014 в 01:37
Спасибо очень полезные уроки.
#35 Zatox 26-08-2014 в 14:49
Гайд сам по себе хороший, но не доделанный. Смена пароля без подтверждения - это плохо. Т.к. если знать логин и email, то можно кому угодно сбросить пароль.
#36 Чайник Полный 03-08-2015 в 21:52
Я бы не стал использовать этот способ...
Ну, а если я знаю emal под логином Sidorov?
Например, он сам разместил свой ящик sidorov@mail.ru на сайте бесплатных объявлений, для контактов.
Ну, а я решил ему подгадить: в восстановлении пароля ввожу его e-mail 100500 раз на сутки... это же ему перед заходом на сайт ещё нужно каждый раз в ящик лазать, за "своим" паролем
#37 Alex 13-06-2016 в 17:55
Хорошая статья, только <a href="index.php">

echo 'Новый пароль отправлен на ваш e-mail!<br><a ref="index.php">Главная страница</a>';


#38 Денис 04-12-2016 в 19:31
не работает
Добавить новый комментарий

Автор:

Текст сообщения:

Если в комментарии присутствует код, пожалуйста вставляете его между тегами [code][/code]

cap

Код с картинки:


Получать уведомления о новых комментариях по Email могут только зарегистрированные пользователи.

41001346159934
R314489888859
Уроки
Для начинающих
Интересное
Файлы
Полезное
Опрос

Много ли среди программистов девушек?

Последние комментарии
Ссылки