<?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="container-fluid page_header"><div class="container"><div class="row"><div class="col-xs-12 col-sm-8 col-md-9 col-lg-9"><h1>Восстановление пароля </h1><ol class="breadcrumb" xmlns:v="http://'.homeurl.'/#"><li typeof="v:Breadcrumb"><a href="/" rel="v:url" property="v:title">'.homeurl.'</a></li><li class="active" typeof="v:Breadcrumb"><span property="v:title">Восстановление пароля </span></li></ol></div><div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 text-right page_header_sidebar"></div></div></div></div>';
echo'<div class="container page_body"><div class="row"><div class="col-xs-12 page_content col-lg-9"><div class="navbar page_content_navbar collapse hidden-lg"><div class="container-fluid"><div class="navbar-collapse"></div></div></div><div class="text_box hidden-lg pr_block_small hidden"></div><div class="container-fluid cols_table">';
echo '<div class="catSides"><a href="/"><i class="md-format-list-bulleted"></i> Главная </a> - Восстановление пароля</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 нет в базе данных');
///Подключаем меню
$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="row text_box"><div class="pull-right text-muted top_right_box"></div>На ваш основной E-mail отправлена информация для восстановления пароля.</div>';
///Подключаем меню
$title->GetMenu();

///Подключаем футер
$title->GetFooter();
die();
}
$_SESSION['code'] = rand(10000,99999);
echo '<div class="row text_box"><div class="pull-right text-muted top_right_box"></div><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>';
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` = ?", array(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="row text_box"><div class="pull-right text-muted top_right_box"></div>На ваш основной и секретный E-mail отправлен новый пароль.</div>';
///Подключаем меню
$title->GetMenu();

///Подключаем футер
$title->GetFooter();
die();
}
}
$_SESSION['codes'] = rand(10000,99999);
echo '<div class="row text_box"><div class="pull-right text-muted top_right_box"></div>Ваш 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>';
break;
}

///Подключаем меню
$title->GetMenu();

///Подключаем футер
$title->GetFooter();
?>