Пишем восстановление пароля на php

Пишем восстановление пароля на phpЕсли вы пишите свою CMS и незнаете как организовать восстановление пароля то эта статья для вас. Для начала давайте определимся с алгоритмом работы.

1. Создаем форму куда пользователь будет вписывать свой логин для востановления
2. Проверяем есть ли пользователь в базе
3. Если юзер есть в базе, то генерируем новый пароль.
4. Для безопасности я советую вам хранить пароли в зашифрованом виде. Поэтому перегоняем в md5 хеш.
5. Переписываем пороль в базу уже хэшированым
6. Шлём пороль на это мыло

Вот и всё. И так начнем. Создадим файл lostpass.php и в него впишем сдедующий код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<head>
<title>Восстановление пароля - Админцентр</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="shortcut icon" href="images/siteico0.ico" type="image/x-icon" />

<style type="text/css" media="all">
* { margin: 0; padding: 0; }
body {background: #fAfAfA; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px;}
img {border:none;}
#conteiner {width: 400px; margin: 7em auto;}
#conteiner .loform {
    padding: 16px 16px 16px 16px;
    font-weight: normal;
    -moz-border-radius: 11px;
    -khtml-border-radius: 11px;
    -webkit-border-radius: 11px;
    border-radius: 5px;
    background: #fff;
    border: 1px solid #e5e5e5;
    -moz-box-shadow: rgba(200,200,200,1) 0 4px 18px;
    -webkit-box-shadow: rgba(200,200,200,1) 0 4px 18px;
    -khtml-box-shadow: rgba(200,200,200,1) 0 4px 18px;
    box-shadow: rgba(200,200,200,1) 0 4px 18px;
}
#conteiner .mess {
    margin-bottom: 10px;
    padding: 10px;
    font-weight: normal;
    -moz-border-radius: 5px;
    -khtml-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    border: 1px solid;
    -moz-box-shadow: rgba(200,200,200,1) 0 4px 18px;
    -webkit-box-shadow: rgba(200,200,200,1) 0 4px 18px;
    -khtml-box-shadow: rgba(200,200,200,1) 0 4px 18px;
    box-shadow: rgba(200,200,200,1) 0 4px 18px;
    color:#000;
    font-family:Verdana, Arial, Helvetica, sans-serif;
    font-size:11px;
}


#conteiner .loform p {color:#808080; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:14px; margin:5px;}
#conteiner .loform input {background:#fafafa; border:1px solid #cccccc; color:#666666; padding:4px; width:98%; font-size:25px; margin-bottom:20px;}
#conteiner .loform input.submit {margin-top:-16px; width:74px; height:64px; border: 1 px; text-align:right; vertical-align:top;}
#conteiner .loform a {color: #bcbcbc; text-decoration: none;}
#conteiner .loform a:hover {color:#d7722f;}

#conteiner .logo {text-align:center; padding-bottom:20px;}
</style>
</head>
<body>
<div id="conteiner">
    <div class="logo">
      <p><strong>Восстановление пароля</strong></p>
    </div>

<div class="loform">
            <form name="form1" method="post" action="lostpass.php">
            <p>Логин <input ype="text" name="username" size="40" /></p>
            <p>

                <input type="submit" value="востановить" size="40" name="go">

            </p>
        </form>
        
    </div>
</div>
</body>
</html>

<?php    

//подключаем базу в моём случае

$settings_dir = "../settings"; include "$settings_dir/database.php";


$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$mail = mysql_real_escape_string($_POST['mail']);

// проверяем, если юзер в таблице с таким же логином
    $query = "SELECT `user_id`
                FROM `users`
                WHERE `username`='{$username}'
                LIMIT 1";
    $sql = mysql_query($query) or die(mysql_error());
    if (mysql_num_rows($sql)==1)
    {
//если есть
//генерируем пороль        
$simvols = array ("0","1","2","3","4","5","6","7","8","9",
                        "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
                        "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
      for ($key = 0; $key < 6; $key++)
        {
          shuffle ($simvols);
          $string = $string.$simvols[1];

        }

//перегоняем в md5 хэш
$pass = md5(md5($string));

//переписываем пороль в базе уже хэшированый

$query = "UPDATE `users`
                    SET
                        `password`='{$pass}'
                                                   WHERE `username`='{$username}' ";
        $sql = mysql_query($query) or die(mysql_error());

//получаем мыло из базы для нашего пользователя

$query = "SELECT `mail`
                FROM `users`
                                 WHERE
                `username`='{$username}'
                LIMIT 1";
    $sql = mysql_query($query) or die(mysql_error());

$row = mysql_fetch_assoc($sql);
$mail = $row['mail'];

//шлём пороль на это мыло

mail($mail, "Запрос на востонавление пороля", "Здравствуйте $login ваш новый пороль : $string");

    }



?>
Теги:
восстановление пароля
Добавлено: 20 Мая 2018 07:07:49 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...