Зарегистрироваться | Забыли пароль


Для начинающих

bottom

Уроки

bottom

Полезное

bottom

Файлы

bottom

Ссылки

bottom

Главная страница » Уроки по 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 · Просмотров: 254

Рекомендую
  • Currently 5.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

Рейтинг: 5.0/5 (всего 2 голоса)

Понравился сайт? Внесите свой вклад в его развитие?
R314489888859
41001346159934




   Комментарии к уроку (4)

12
рамиль    Добавлено: 16-11-2010 в 16:56
А у меня ошибка
Parse error: syntax error, unexpected T_VARIABLE in C:\Program Files\VertrigoServ\www\webdictionary\password.php on line 13
 
34
12
Евгений    Добавлено: 20-11-2010 в 13:52
Исправил ошибку в исходном файле
 
34
12
Рамиль    Добавлено: 08-01-2011 в 16:24
У меня почему то пишет пользователь не найден,а хотя он существует и введено правильно
 
34
12
Кушнир Александр    Добавлено: 09-01-2011 в 17:08
Рамиль
Выложите скрипт на файлообменник и структуру БД. Если будет время, посмотрю...
 
34
12

   Добавить комментарий


Ваше имя:


Текст комментария:

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


 
34