<?php
/*
---------------------
Восстановление пароля
---------------------
*/
ACCESS('guests');
//Навигация
ECHO "<div class='navigation'>";
ECHO "<a href='?'>".ICONS('home', 25, 'fa-fw')."</a>";
ECHO "".ICONS('angle-right', 20, 'fa-fw')."";
ECHO "".LG('Восстановление пароля')."";
ECHO "</div>";
//Установка нового пароля
IF (GET('id') && GET('hash') && DB::GET_COLUMN("SELECT COUNT(*) FROM `USERS` WHERE `ID` = '".INTVAL($_GET['id'])."' AND `EMAIL_HASH` = '".TEXT_ABSOLUTE($_GET['hash'])."' LIMIT 1") == 1){
$user = DB::GET_STRING("SELECT * FROM `USERS` WHERE `ID` = '".INTVAL($_GET['id'])."' AND `EMAIL_HASH` = '".TEXT_ABSOLUTE($_GET['hash'])."' LIMIT 1");
IF (POST('ok')){
$password1 = POST('password1');
$password2 = POST('password2');
$world_set_update = $password1;
$file_default = FILE_GET_CONTENTS(ROOT.'/system/config/password.txt');
IF (STRIPOS($file_default, $world_set_update) !== FALSE) {
ERROR('Пароль слишком простой. Придумайте более сложный используя и цифры и буквы вместе', 'session');
$err_data = 1;
}
IF (!PREG_MATCH("#^([A-z0-9\-\_])+$#ui", $password1)) {
ERROR('В пароле присутствуют запрещенные символы. Используйте только буквы английского алфавита и цифры', 'session');
$err_data = 1;
}
IF (STR($password1) > 20){
ERROR('Пароль не может быть больше 20 символов', 'session');
$err_data = 1;
}
IF (STR($password1) < 8){
ERROR('Пароль не может быть меньше 8 символов', 'session');
$err_data = 1;
}
IF ($password1 != $password2){
ERROR('Пароли не совпадают', 'session');
$err_data = 1;
}
IF (!POST('captcha') OR !POST('captcha_key')) {
ERROR('Вы не ввели числа с картинки', 'session');
$err_data = 1;
}
IF (MD5((int)POST('captcha') + $captcha_random_seed) != POST('captcha_key')) {
ERROR('Числа с картинки введены неверно', 'session');
$err_data = 1;
}
IF ($err_data == 1){
REDIRECT('/?get=password&id='.$user['ID'].'&hash='.$user['EMAIL_HASH'].'');
}
$hash = USER_HASH($user['ID']);
DB::GET_SET("UPDATE `USERS` SET `HASH` = '".$hash."', `EMAIL_HASH` = '".NULL."', `PASSWORD` = '".SHIF($password1)."' WHERE `ID` = '".$user['ID']."' LIMIT 1");
SETCOOKIE('DOUBLE', 1, TIME() + 60 * 60 * 24 * 365);
SETCOOKIE('USER_ID', $user['ID'], TIME() + 60 * 60 * 24 * 365);
SETCOOKIE('PASSWORD', ENCRYPT($password1, $user['ID']), TIME() + 60 * 60 * 24 * 365);
SUCCESS('Доступ успешно восстановлен');
REDIRECT('/id'.$user['ID'].'');
}
ECHO "<div class='list-body'>";
ECHO "<div class='list-menu'>";
ECHO "<form method='post'>";
HTML::INPUT('login', 'Логин', 'Ваш логин:', NULL, $user['LOGIN'], 'form-control-100', 'text', 'disabled=disabled');
HTML::INPUT('password1', NULL, 'Придумайте пароль:', NULL, NULL, 'form-control-100', 'password');
HTML::INPUT('password2', NULL, 'Повторите пароль:', NULL, NULL, 'form-control-100', 'password');
CAPTCHA('Введите числа с картинки', 'form-control-30');
HTML::BUTTON('btn-login', 'ok', 'plus', 'ВОССТАНОВИТЬ');
ECHO "</form>";
ECHO "</div>";
ECHO "</div>";
}ELSE{
//Отправка сообщения для восстановления доступа
IF (POST('ok')){
$err_data = 0;
$login = ADSL(POST('login'));
$email = ADSL(POST('email'));
$code = MD5(MT_RAND(0000000,9999999));
IF (DB::GET_COLUMN("SELECT COUNT(*) FROM `USERS` WHERE `LOGIN` = '".$login."' LIMIT 1") == 0){
ERROR('Такого пользователя не существует', 'session');
$err_data = 1;
}
IF (DB::GET_COLUMN("SELECT COUNT(*) FROM `USERS` WHERE `EMAIL` = '".$email."' AND `LOGIN` = '".$login."' LIMIT 1") == 0){
ERROR('Не удалось найти пользователя с таким E-mail', 'session');
$err_data = 1;
}
IF (!PREG_MATCH("/^(?:[a-z0-9]+(?:[-_.]?[a-z0-9]+)?@[a-z0-9_.-]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i", $email)) {
ERROR('Проверьте правильность адреса', 'session');
$err_data = 1;
}
IF (!POST('captcha') OR !POST('captcha_key')) {
ERROR('Вы не ввели числа с картинки', 'session');
$err_data = 1;
}
IF (MD5((int)POST('captcha') + $captcha_random_seed) != POST('captcha_key')) {
ERROR('Числа с картинки введены неверно', 'session');
$err_data = 1;
}
IF ($err_data == 1){
REDIRECT('/?get=password');
}
$user = DB::GET_STRING("SELECT `ID` FROM `USERS` WHERE `LOGIN` = '".$login."' LIMIT 1");
EMAIL($email, 'Восстановление доступа к аккаунту на '.HTTP_HOST.'', 'Здравствуйте. Вы получили это письмо для восстановления доступа к аккаунту на нашем сайте <b>'.HTTP_HOST.'</b>.<br /><br /> Ваш логин: <b>'.$login.'</b><br /><br />Перейдите по ссылке для установки нового пароля:<br /><a href="http://'.HTTP_HOST.'/?get=password&id='.$user['ID'].'&hash='.$code.'">http://'.HTTP_HOST.'/?get=password&id='.$user['ID'].'&hash='.$code.'</a>', TEXT_ABSOLUTE(CONFIG('EMAIL')));
DB::GET_SET("UPDATE `USERS` SET `EMAIL_HASH` = '".$code."' WHERE `ID` = '".$user['ID']."' LIMIT 1");
SUCCESS('Письмо успешно отправлено на указанный адрес. Перейдите к письму и следуйте дальнейшим инструкциям', 'session');
REDIRECT('/?get=password');
}
ECHO "<div class='list-body'>";
ECHO "<div class='list-menu'>";
ECHO "<form method='post'>";
HTML::INPUT('login', 'Логин', 'Ваш логин:');
HTML::INPUT('email', 'E-mail', 'Ваш E-mail, привязанный к логину:', NULL, NULL);
CAPTCHA('Введите числа с картинки', 'form-control-30');
HTML::BUTTON('btn-login', 'ok', 'envelope', 'ОТПРАВИТЬ ПИСЬМО');
ECHO "</form>";
ECHO "</div>";
ECHO "</div>";
}
ECHO "<div class='list-body'>";
ECHO "<div class='list-menu'><a href='/?get=login'>";
ECHO ICONS('arrow-left', 15, 'fa-fw');
ECHO " ".LG('Авторизация')."";
ECHO "</a></div>";
ECHO "<div class='list-menu'><a href='/?get=registration'>";
ECHO ICONS('arrow-left', 15, 'fa-fw');
ECHO " ".LG('Регистрация')."";
ECHO "</a></div>";
ECHO "</div>";
//Навигация
ECHO "<div class='navigation'>";
ECHO "<a href='?'>".ICONS('home', 25, 'fa-fw')."</a>";
ECHO "".ICONS('angle-right', 20, 'fa-fw')."";
ECHO "".LG('Восстановление пароля')."";
ECHO "</div>";
?>