Файл: pass.php
Строк: 110
<?php
/* Мод "Пароль"
 * Версия v0.0.1
 * Дата последнего редактирования 29.04.2015
 * Двиг DCMS Special
 * Модифицировал densnet
 * Файл pass.php
 * Описание: Восстановление пароля
 */
require_once 'sys/inc/start.php';
require_once 'sys/inc/compress.php';
require_once 'sys/inc/sess.php';
require_once 'sys/inc/settings.php';
require_once 'sys/inc/db_connect.php';
require_once 'sys/inc/ipua.php';
require_once 'sys/inc/fnc.php';
$show_all = true;
require_once 'sys/inc/user.php';
user::only_unreg();
$set['title'] = 'Восстановление пароля';
require_once 'sys/inc/thead.php';
if (isset($_POST['nick']) && isset($_POST['mail']) && $_POST['nick'] != NULL && $_POST['mail'] != NULL) {
    if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `nick` = '" . mysql_real_escape_string($_POST['nick']) . "'"), 0) == 0) {
        $err = "Пользователь с таким логином не зарегистрирован";
    } elseif (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `nick` = '" . mysql_real_escape_string($_POST['nick']) . "' AND `ank_mail` = '" . mysql_real_escape_string($_POST['mail']) . "'"), 0) == 0) {
        $err = 'Неверный адрес E-mail или информация о E-mail отсутствует';
    } else {
        $q = mysql_query("SELECT * FROM `user` WHERE `nick` = '" . mysql_real_escape_string($_POST['nick']) . "' LIMIT 1");
        $user2 = mysql_fetch_assoc($q);
        $new_sess = substr(md5(passgen()), 0, 20);
        $subject = "Восстановление пароля";
        $regmail = "Здравствуйте $user2[nick]<br />
Вы активировали восстановление пароля<br />
Для установки нового пароля перейдите по ссылке:<br />
<a href='http://$_SERVER[HTTP_HOST]/pass.php?id=$user2[id]&set_new=$new_sess'>http://$_SERVER[HTTP_HOST]/pass.php?id=$user2[id]&set_new=$new_sess</a><br />
Данная ссылка действительна до первой авторизации под своим логином ($user2[nick])<br />
С уважением, администрация сайта<br />
";
        $adds = "From: "password@$_SERVER[HTTP_HOST]" <password@$_SERVER[HTTP_HOST]>n";
        $adds .= "Content-Type: text/html; charset=utf-8n";
        mail($user2['ank_mail'], '=?utf-8?B?' . base64_encode($subject) . '?=', $regmail, $adds);
        mysql_query("UPDATE `user` SET `sess` = '$new_sess' WHERE `id` = '$user2[id]' LIMIT 1");
        msg("Ссылка для установки нового пароля отправлена на e-mail "$user2[ank_mail]"");
    }
}
if (isset($_GET['id']) && isset($_GET['set_new']) && strlen($_GET['set_new']) == 20 && mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `id` = '" . intval($_GET['id']) . "' AND `sess` = '" . mysql_real_escape_string($_GET['set_new']) . "'"), 0) == 1) {
    $q = mysql_query("SELECT * FROM `user` WHERE `id` = '" . intval($_GET['id']) . "' LIMIT 1");
    $user2 = mysql_fetch_assoc($q);
    if (isset($_POST['pass1']) && isset($_POST['pass2'])) {
        if ($_POST['pass1'] == $_POST['pass2']) {
            if (text::utf8_strlen($_POST['pass1']) < 6) {
                $err = 'По соображениям безопасности новый пароль не может быть короче 6-ти символов';
            }
            if (text::utf8_strlen($_POST['pass1']) > 32) {
                $err = 'Длина пароля превышает 32 символа';
            }
        } else {
            $err = 'Новый пароль не совпадает с подтверждением';
        }
        if (!isset($err)) {
            setcookie('id_user', $user2['id'], time() + 60 * 60 * 24 * 365);
            mysql_query("UPDATE `user` SET `pass` = '" . crypt::hash($_POST['pass1']) . "' WHERE `id` = '$user2[id]' LIMIT 1");
            setcookie('pass', crypt::encrypt($_POST['pass1'], $user2['id']), time() + 60 * 60 * 24 * 365);
            msg('Пароль успешно изменен');
        }
    }
    err();
    aut();
    echo "<form class = 'comm' action='/pass.php?id=$user2[id]&set_new=" . text::esc($_GET['set_new'], 1) . "&$passgen' method="post">n";
    echo "Логин:<br />n";
    echo "<input type="text" disabled='disabled' value='$user2[nick]' maxlength="32" size="16" /><br />n";
    echo "Новый пароль:<br />n<input type='password' name='pass1' value='' /><br />n";
    echo "Подтверждение:<br />n<input type='password' name='pass2' value='' /><br />n";
    echo "<div class = 'button_blue'>";
    echo "<button name = 'save'>Сохранить</button>";
    echo "</div></form>";
} else {
    err();
    aut();
    echo "<div class = 'window'>"
    . "Для восстановления пароля - введите ваш логин и e-mail. <br />"
    . "На ваш e-mail придет ссылка для установки нового пароля.<br />"
    . "Если вы не заполнили e-mail в анкете, обратитесь в службу поддержки данного ресурса.</div>";
    echo "<form action="?$passgen" class = 'comm' method="post">n";
    echo "Логин:<br />n";
    echo "<input type="text" name="nick" title="Логин" value="" maxlength="32" size="16" /><br />n";
    echo "E-mail:<br />n";
    echo "<input type="text" name="mail" title="E-mail" value="" maxlength="32" size="16" /><br />n";
    echo "<div class = 'button_blue'>";
    echo "<button>Далее</button>";
    echo "</div></form>";
}
echo "<div class = 'comm'>";
echo img('left.png', '') . " <a href='/aut.php'>Авторизация</a><br />";
echo img('left.png', '') . " <a href='/reg.php'>Регистрация</a>";
echo "</div>";
require_once 'sys/inc/tfoot.php';