<?php
session_start();
require_once('classes/body.class.php');
require_once('classes/db.class.php');
require_once('classes/system.class.php');
$title= new Body;
$title->SetTitle(homeurl.' - Восстановление пароля');
$title->GetHeader();
if ($b == true) {
header('location: /');
die();
}
//echo'<div class="row"><div class="col-sm-6">';
echo'<div class="tile"><div class="t-header th-alt bg-teal"><div class="th-title"><i class="zmdi zmdi-widgets"></i><a href="/"style="text-decoration:none; color:white;"> Главная</a> :: Восстановление</div></div></div>';
$do = isset($_GET['do']) ? check($_GET['do']) : false;
switch($do) {
default:
if (isset($_POST['send'])) {
$form = ['mail' => isset($_POST['mail']) ? check($_POST['mail']) : null, 'kod' => isset($_POST['kod']) ? intval($_POST['kod']) : null];
$sql = DB::$dbs->query("SELECT * FROM blogger WHERE email = ? LIMIT 1", [$form['mail']]);
if ($sql -> rowCount() == 0) {
err('Такого E-mail нет в базе данных.</br> "KnopKa" и "knopka" разные E-mail-ы!');
$title->GetMenu();
$title->GetFooter();
die();
}
if (empty($form['mail'])) {
err('E-mail не введен!');
$title->GetMenu();
$title->GetFooter();
die();
}
$a = $sql -> fetch();
if (empty($form['kod']) OR $form['kod'] != $_SESSION['code']) {
err('Код не введен или введен не верно!');
$title->GetMenu();
$title->GetFooter();
die();
}
$rand = mt_rand(100000,999999);
$hash = sha1($rand);
$mes = 'Здравствуйте! Вы запросили восстановление пароля на сайте <b>'.homeurl.'</b>! Для того, чтобы получить новый пароль перейдите по ссылке <br/>http://'.$_SERVER['HTTP_HOST'].'/recovery.html?do=check&code='.$hash.'<br/>Ссылка будет действительна в течении 3-х часов. Если это были не вы, то проигнорируйте данное письмо.';
$rec_time = time() + 3 * 60 * 60;
DB::$dbs->query("UPDATE `blogger` SET `hash_code` = ?, `rec_time` = ? WHERE `id` = ? LIMIT 1", [$hash,$rec_time,$a['id']]);
$from = 'SUPPORT@'.homeurl.'';
mail($a['email'], "Восстановление пароля", $mes,
"From: $from \r\n"."Content-Type: text/html; charset=\"utf-8\" \r\n"
."X-Mailer: PHP/" . phpversion());
echo '<div class="list-group-item media"><div class="media-body"><div class="list-group-item-heading">На ваш основной E-mail отправлена информация для восстановления пароля.</div></div></div>';
$title->GetMenu();
$title->GetFooter();
die();
}
$_SESSION['code'] = rand(10000,99999);
echo '<div class="list-group-item media"><div class="media-body"><div class="list-group-item-heading"><form action="?" method="POST">Введите E-mail:<br/><input class="form-control" type="text" name="mail"/><br/>Введите код: <b>'.$_SESSION['code'].'</b><br/><input class="form-control" type="text" name="kod" size="5"/><br/><input class="btn btn-primary" type="submit" name="send" value="Отправить"/></form></div></div></div>';
break;
case 'check':
$code = isset($_GET['code']) ? check($_GET['code']) : false;
$sql = DB::$dbs->query("SELECT * FROM blogger WHERE hash_code = ?", [$code]);
if ($sql -> rowCount() == 0) {
err('Неопознанная Ошибка...');
$title->GetMenu();
$title->GetFooter();
die();
}
$a = $sql -> fetch();
if ($a['rec_time'] < time()) {
err('Отведенное вам время истекло!');
$title->GetMenu();
$title->GetFooter();
die();
}
if (isset($_POST['send'])) {
$form = ['mail' => isset($_POST['mail']) ? check($_POST['mail']) : null, 'kod' => isset($_POST['kod']) ? check($_POST['kod']) : null];
if (DB::$dbs->querySingle("SELECT count(id) FROM blogger WHERE email_secret = ?", [$form['mail']]) == 0) {
err('Такого E-mail нет в базе данных');
} elseif (empty($form['kod']) OR $form['kod'] != $_SESSION['codes']) {
err('Код не введен или введен не верно!');
} else {
$repass = pass(8);
DB::$dbs->query("UPDATE `blogger` SET `pass` = ? WHERE `id` = ?", [sha1($repass.'gearnet'),$a['id']]);
DB::$dbs->query("UPDATE `blogger` SET `hash_code` = ?, `rec_time` = ? WHERE `id` = ?", array('','',$a['id']));
$mes = 'Ваш новый пароль: <b>'.$repass.'</b><br/>Обязательно смените его.';
$from = 'SUPPORT@'.homeurl.'';
mail($a['email'], "Восстановление пароля", $mes,
"From: $from \r\n"
."Content-Type: text/html; charset=\"utf-8\" \r\n"
."X-Mailer: PHP/" . phpversion());
mail($a['email_secret'], "Восстановление пароля", $mes,
"From: $from \r\n"
."Content-Type: text/html; charset=\"utf-8\" \r\n"
."X-Mailer: PHP/" . phpversion());
setcookie('id', $a['id'], time()+3600*24*365, '/');
setcookie('pass', sha1($repass.'gearnet'), time()+3600*24*365, '/');
echo '<div class="list-group-item media"><div class="media-body"><div class="list-group-item-heading">На ваш основной и секретный E-mail отправлен новый пароль.</div></div></div>';
$title->GetMenu();
$title->GetFooter();
die();
}
}
$_SESSION['codes'] = rand(10000,99999);
echo '<div class="list-group-item media"><div class="media-body"><div class="list-group-item-heading">Ваш E-mail: '.$a['email'].'<br/><br/>
<form action="?do=check&code='.$code.'" method="POST">Введите секретный E-mail:
<br/><input class="form-control" type="text" name="mail"/><br/>Введите код: <b>'.$_SESSION['codes'].'</b><br/>
<input class="form-control" type="text" name="kod" size="5"/><br/><input type="submit" class="btn btn-primary" name="send" value="Отправить"/></form></div></div></div>';
break;
}
$title->GetMenu();
$title->GetFooter();
?>