Файл: Modules/recoveryPassword.php
Строк: 42
<?php
$title = 'Восстановление пароля';
require_once ('Sys/head.php');
switch ($act)
    {
        default:
        unreg();
        echo'';
        if(!isset($_POST['ok']))
            {
                echo '    <div id="st21">
 <div class="st2">
                             <h2 class="title">Восстановление пароля</h2>
                               <div class="middle_back">';
                echo '<small>На E-Mail, указанный при регистрации, будет выслана ссылка для восстановления пароля.<br/></small>';
                echo'
                <form action="" method="post">
                Логин:<br/>
                  <input name="login" type="text" class="form" value="" />
                <br/>
                <input name="ok" type="submit" class="button" value="Восстановить" /></form><br/>
                ';
                echo '</div></div><br /></div>';
            }
        else
            {
                $error = '';
                if(empty($_POST['login']))
                    {
                        $error .= 'Логин не введен.<br/>';
                    }
                if(mb_strlen($_POST['login']) > 500 OR mb_strlen($_POST['login']) < 1)
                    {
                        $error .= 'Поле "Логин" должно быть не меньше 1 и не больше 500 символов.<br/>';
                    }
                if(!empty($error))
                    {
                        echo '<div id="st21">
 <div class="st2">
                             <h2 class="title">Восстановление пароля</h2>
                               <div class="middle_back">';
                        echo 'В результате заполнения полей , выявились ошибки:<br/>';
                        echo $error;
                        echo '<a href="http://'.$_SERVER['HTTP_HOST'].'/recoveryPassword">Повторить</a><br/>';
                        echo '</div></div><br /></div>';
                    }
                else
                    {
                        $login = filter($_POST['login']);
                        $userIsset = $mysqli->query("SELECT `id`,`losttime`,`mail` FROM `".$prefix."users` WHERE `login` = '".$login."'");
                        if($userIsset->num_rows > 0)
                            {
                                $row = $userIsset->fetch_assoc();
                                $error = '';
                                if($row['losttime'] > $time-$set['TimerecoveryPassword'])
                                    {
                                        $error .= 'Нельзя так часто восстанавливать пароль.<br/>';
                                    }
                                if($row['mail'] == '')
                                    {
                                        $error .= 'У данного пользователя не указан e-mail, обратитесь к администратору.<br/>';
                                    }
                                if(!empty($error))
                                    {
                                        echo '<div id="st21">
 <div class="st2">
                             <h2 class="title">Восстановление пароля</h2>
                               <div class="middle_back">';
                                        echo 'В результате заполнения полей , выявились ошибки:<br/>';
                                        echo $error;
                                        echo '<a href="http://'.$_SERVER['HTTP_HOST'].'/recoveryPassword">Повторить</a><br/>';
                                        echo '</div></div><br /></div>';
                                    }
                                else
                                    {
                                        $key = keyRand();
                                        $update = $mysqli->query("UPDATE `".$prefix."users` SET `losttime` = '".$time."', `lostkey` = '".$key."' WHERE `id` = '".$row['id']."'");
                                        $subject = "Восстановление пароля на сайте ".$_SERVER['HTTP_HOST'];
                                        $body = "Вы создали запрос на восстановление пароля к аккаунту на сайте ".$_SERVER['HTTP_HOST']."n";
                                        $body .= "Для восстановления пароля , вам необходимо пройти по ссылке ниже:n";
                                        $body .= "http://".$_SERVER['HTTP_HOST']."/recoveryPassword/".$row['id']."/".$key." n";
                                        $headers = "From: ".$set['mail']." n";
                                        $headers .= "Content-Type: text/plain; charset=utf-8n";
                                        mail($row['mail'], $subject, $body, $headers);
                                        echo '<div id="st21">
 <div class="st2">
                             <h2 class="title">Восстановление пароля</h2>
                               <div class="middle_back">На e-mail, указанный в аккаунте, отправлена инструкция по восстановлению пароля.</div></div></div>';
                                    }
                            }
                        else
                            {
                                echo '<div id="st21">
 <div class="st2"><h2 class="title">Восстановление пароля</h2>
                               <div class="middle_back">';
                                echo 'Пользователь не найден, или данные не верны.<br/>';
                                echo '<a href="http://'.$_SERVER['HTTP_HOST'].'/recoveryPassword">Повторить</a><br/>';
                                echo '</div></div><br /></div>';
                            }
                    }
            }
        break;
        case 'good':
        if(isset($_GET['uid']) AND isset($_GET['key']))
            {
                $uid = abs(intval($_GET['uid']));
                $key = filter($_GET['key']);
                $usr = $mysqli->query("SELECT `id`,`mail` FROM `".$prefix."users` WHERE `id` = '".$uid."' AND `lostkey` = '".$key."' AND `losttime` > '".($time-$set['TimerecoveryPassword'])."'");
                if($usr->num_rows > 0)
                    {
                        $row = $usr->fetch_assoc();
                        $newPass = password();
                        $update = $mysqli->query("UPDATE `".$prefix."users` SET `lostkey` = '', `password` = '".md5($newPass)."' WHERE `id` = '".$uid."'");
                        echo '<div id="st21">
 <div class="st2"><h2 class="title">Восстановление пароля</h2>
                               <div class="middle_back">';
                        echo 'Пароль успешно восстановлен.<br/>';
                        echo 'Новый пароль: '.$newPass.'<br/>';
                        echo '<small>Новый пароль также отправлен на E-MAIL указанный при регистрации.</small>';
                        echo '</div></div></div>';
                        $subject = "Новый пароль на сайте ".$_SERVER['HTTP_HOST'];
                        $body = "У вас установлен новый пароль от аккаунта на сайте ".$_SERVER['HTTP_HOST']."n";
                        $body .= "Новый пароль: ".$newPass." n";
                        $headers = "From: ".$set['mail']." n";
                        $headers .= "Content-Type: text/plain; charset=utf-8n";
                        mail($row['mail'], $subject, $body, $headers);
                    }
                else
                    {
                                echo '<div id="st21">
 <div class="st2"><h2 class="title">Восстановление пароля</h2>
                               <div class="middle_back">';
                                echo 'Пароль не восстановлен.<br/>';
                                echo '</div></div><br /></div>';
                    }
            }
        else
            {
                echo '<div id="st21">
 <div class="st2"><h2 class="title">Восстановление пароля</h2>
                               <div class="middle_back">';
                echo 'Пароль не восстановлен.<br/>';
                echo '</div></div><br /></div>';
            }
        break;
    }
?>