View file ä󿪫¬/pass.php

File size: 6.62Kb
<?php
/* Mixanza Production
 * Дата последнего редактирования 16.11.2017
 * Модифицировал Mixanza
 */

foreach (array('start', 'compress', 'sess', 'settings', 'db_connect', 'ipua', 'fnc', 'shif') as $inc) {
    require_once "sys/inc/$inc.php";
}

$show_all = true;

require_once H . 'sys/inc/user.php';

only_unreg();

$set['title'] = lang('Восстановление пароля');

require_once H . 'sys/inc/thead.php';

#Навигация
echo "<div class='card-header'>";
echo "<a href='/' data-toggle='tooltip' data-placement='right' title='" . lang('На главную') . "'><i class='fa fa-home fa-lg'></i></a> <i class='fa fa-angle-right fa-fw'></i> ";

echo lang('Восстановление пароля');
echo "</div>";


echo "<div class='fon-list'>";


if (isset($_POST['nick']) && isset($_POST['mail']) && $_POST['nick'] != NULL && $_POST['mail'] != NULL) {
    
    if ($pdo->query("SELECT COUNT(*) FROM `user` WHERE `nick` = '" . htmlspecialchars($_POST['nick']) . "'")->fetchColumn() == 0) {
        $err[] = __("Пользователь с таким логином не зарегистрирован");
        
    }
    
$user_pass = $pdo->query("SELECT * FROM `user` WHERE `nick` = '" . htmlspecialchars($_POST['nick']) . "' LIMIT 1")->fetch(PDO::FETCH_ASSOC);   
$email = $pdo->query("SELECT * FROM `email` WHERE `id_user` = '" .$user_pass['id'] . "' AND `ok` = '1' LIMIT 1")->fetch(PDO::FETCH_ASSOC);   

    if ($pdo->query("SELECT COUNT(*) FROM `email` WHERE `id_user` = '" .$user_pass['id'] . "' AND `name` = '" . htmlspecialchars($_POST['mail']) . "' AND `ok` = '1'")->fetchColumn() == 0) {
        $err[] = __('Неверный адрес E-mail или информация о E-mail отсутствует');
    } else {
        
        $new_sess = substr(md5(passgen()), 0, 20);

if (mail("" . htmlspecialchars($_POST['mail']) . "", "Восстановление пароля", "Здравствуйте. Вы получили это сообщение для восстановления доступа к нашему сайту ".htmlspecialchars($_SERVER['HTTP_HOST'])." . Перейдите по ссылке для установки нового пароля: http://".htmlspecialchars($_SERVER['HTTP_HOST'])."/pass.php?id=" .$user_pass['id'] . "&set_new=".$new_sess."", "From: adm@facefree.ru")){ 

$pdo->query("UPDATE `user` SET `sess` = '$new_sess' WHERE `id` = '$user2[id]' LIMIT 1");

$_SESSION['message'] = __('Ссылка для установки нового пароля отправлена на e-mail') . " \"$email[name]\"";
header("Location: /pass.php");
} else { 
$_SESSION['err'] = 'При отправке возникли ошибки. Попробуйте ещё раз';
header("Location: pass.php?");
}

 
    }
}
if (isset($_GET['id']) && isset($_GET['set_new']) && strlen($_GET['set_new']) == 20) {
    if ($pdo->query("SELECT COUNT(*) FROM `user` WHERE `id` = '" . intval($_GET['id']) . "' AND `sess` = '" . htmlspecialchars($_GET['set_new']) . "'")->fetchColumn() == 1) {
        $user2 = $pdo->query("SELECT * FROM `user` WHERE `id` = '" . intval($_GET['id']) . "' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
    }
  if (isset($_POST['pass1']) && isset($_POST['pass2'])) {
      
        if ($_POST['pass1'] == $_POST['pass2']) {
            if (utf8_strlen($_POST['pass1']) < 6) {
                $err[] = __('По соображениям безопасности новый пароль не может быть короче 6-ти символов');
            }
            if (utf8_strlen($_POST['pass1']) > 32) {
                $err[] = __('Длина пароля превышает 32 символа');
            }
        } else {
            $err[] = __('Новый пароль не совпадает с подтверждением');
        }
        if (!isset($err)) {
 $user2 = $pdo->query("SELECT * FROM `user` WHERE `id` = '" . intval($_GET['id']) . "' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
            
             setcookie('id_user', $user2['id'], time() + 60 * 60 * 24 * 365);
            $pdo->query("UPDATE `user` SET `pass` = '" . shif($_POST['pass1']) . "' WHERE `id` = '$user2[id]' LIMIT 1");
            setcookie('pass', cookie_encrypt($_POST['pass1'], $user2['id']), time() + 60 * 60 * 24 * 365);
            msg(__('Пароль успешно изменен'));
 
        }
    }

    err();
$user2 = $pdo->query("SELECT * FROM `user` WHERE `id` = '" . intval($_GET['id']) . "' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
 
    echo "<form class='list-group-item-komm' style='padding: 10px;' action='/pass.php?id=$user2[id]&amp;set_new=" . esc($_GET['set_new'], 1) . "&amp;$passgen' method=\"post\">\n";

    echo lang("Логин") . ":<br />\n<input type=\"text\" class='form-control' style='width: 90%;' disabled='disabled' value='$user2[nick]' maxlength=\"32\" size=\"16\" /><br />\n";
    echo lang("Новый пароль") . ":<br />\n<input type='password' name='pass1' class='form-control' style='width: 90%;' value='' /><br />\n";
    echo lang("Подтверждение") . ":<br />\n<input type='password' name='pass2' class='form-control' style='width: 90%;' value='' /><br />\n";

    $doc->Button('knopka', 'save', 'save', 'Сохранить пароль');
    echo "</form>";
} else {

    err();
    ?>

    <div class = 'list-group-item-komm' style='padding: 10px;'>
        <b>Для восстановления пароля:</b><br />
        &#8226; Введите в соответственную форму Ваш логин и e-mail. <br />
        &#8226; На Ваш E-mail придет ссылка для установки нового пароля.<br />
        &#8226; Если Вы не заполнили E-mail в анкете, обратитесь в службу поддержки данного ресурса.
    </div>
    <?php
    echo "<form action='/pass.php?$passgen' class='list-group-item-komm' style='padding: 10px;' method='post'>";
  echo "Введите логин:<br />\n<input class='form-control' type='text' name='nick' value='' class='form-control' style='width: 90%;' /><br />\n";
  echo "Введите адрес E-mail:<br />\n<input class='form-control' type='text' name='mail' value='' class='form-control' style='width: 90%;' /><br />\n";
   
    $doc->Button('knopka', null, null, 'Далее');
?><br><br>

<div class='mess'>* Доставка письма может занимать от 3 до 5 минут<br><br>
* При отправке повторного запроса предыдущее письмо с ссылкой станут недействительными</div>
<? 
    echo "</form>";
}
echo "</div>";
require_once H . 'sys/inc/tfoot.php';