View file mail/lostpassword.php

File size: 15.71Kb
<?php
#-----------------------------------------------------#
#          ********* ROTORCMS *********               #
#              Made by  :  VANTUZ                     #
#               E-mail  :  [email protected]         #
#                 Site  :  http://pizdec.ru           #
#             WAP-Site  :  http://visavi.net          #
#                  ICQ  :  36-44-66                   #
#  Вы не имеете право вносить изменения в код скрипта #
#        для его дальнейшего распространения          #
#-----------------------------------------------------#
require_once ('../includes/start.php');
require_once ('../includes/functions.php');
require_once ('../includes/header.php');
include_once ('../themes/header.php');

if (isset($_GET['act'])) {
	$act = check($_GET['act']);
} else {
	$act = 'index';
} 

show_title('site.png', 'Восстановление пароля');
$config['newtitle'] = 'Восстановление пароля';

if (!is_user()) {
	switch ($act):
	############################################################################################
	##                                    Главная страница                                    ##
	############################################################################################
		case 'index':

			$cooklog = (isset($_COOKIE['cooklog'])) ? check($_COOKIE['cooklog']): '';

			echo 'Введите свой логин<br />';
			echo 'Инструкция по восстановлению будет выслана на электронный адрес указанный в профиле<br />';
			echo 'Восстанавливать пароль можно не чаще чем раз в 12 часов<br /><br />';

			echo '<div class="form">';
			echo '<form method="post" action="lostpassword.php?act=remind&amp;'.SID.'">';
			echo 'Логин:<br />';
			echo '<input name="uz" type="text" maxlength="20" value="'.$cooklog.'" /><br />';
			echo '<input value="Продолжить" type="submit" /></form></div><br />';

			echo 'Если у вас установлен секретный вопрос, вам будет предложено на него ответить<br /><br />';

		break;

		############################################################################################
		##                                    Главная страница                                    ##
		############################################################################################
		case 'remind':

			if (isset($_POST['uz'])) {
				$uz = check(strval($_POST['uz']));
			} else {
				$uz = check(strval($_GET['uz']));
			} 

			if (!empty($uz)) {
				$user = DB::run() -> queryFetch("SELECT * FROM `users` WHERE `users_login`=? LIMIT 1;", array($uz));
				if (!empty($user)) {
					if (!empty($user['users_email'])) {
						echo '<b><big>Восстановление на e-mail:</big></b><br />';
						echo '<div class="form">';
						echo '<form method="post" action="lostpassword.php?act=send&amp;'.SID.'">';
						echo 'Введите e-mail:<br />';
						echo '<input name="email" type="text" maxlength="50" /><br />';
						echo 'Проверочный код:<br /> ';
						echo '<input name="provkod" size="6" maxlength="6" /> ';

						if ($config['protectimg'] == 1) {
							echo '<img src="../gallery/protect.php?'.SID.'" alt="" /><br />';
						} else {
							echo '<b>'.$_SESSION['protect'].'</b><br />';
						} 
						echo '<input name="uz" type="hidden" value="'.$uz.'" />';
						echo '<br /><input value="Восстановить" type="submit" /></form></div><br />';
					} 
					// --------------------------------------------------------------//
					if (!empty($user['users_secquest'])) {
						echo '<b><big>Ответьте на секретный вопрос:</big></b><br />';
						echo '<div class="form">';
						echo '<form method="post" action="lostpassword.php?act=answer&amp;'.SID.'">';

						echo $user['users_secquest'].'<br />';
						echo '<input name="answer" type="text" maxlength="30" /><br />';

						echo 'Проверочный код:<br /> ';
						echo '<input name="provkod" size="6" maxlength="6" /> ';

						if ($config['protectimg'] == 1) {
							echo '<img src="../gallery/protect.php?'.SID.'" alt="" /><br />';
						} else {
							echo '<b>'.$_SESSION['protect'].'</b><br />';
						} 

						echo '<input name="uz" type="hidden" value="'.$uz.'" />';
						echo '<br /><input value="Восстановить" type="submit" /></form></div><br />';
					} 

					if (empty($user['users_email']) && empty($user['users_secquest'])) {
						echo '<img src="../images/img/error.gif" alt="image" /> <b>Невозможно восстановить пароль!</b><br />';
						echo 'Нет технической возможности восстановить пароль, так как у данного пользователя не указан адрес почтового ящика и не установлен секретный вопрос<br />';
						echo 'Для того чтобы вернуть доступ к своему аккаунту необходимо связаться с администрацией сайта<br /><br />';
					} 
				} else {
					show_error('Ошибка! Пользователь с данным логином не зарегестрирован!');
				} 
			} else {
				show_error('Ошибка! Вы не ввели логин пользователя для восстановления!');
			} 

			echo '<img src="../images/img/back.gif" alt="image" /> <a href="lostpassword.php?'.SID.'">Вернуться</a><br />';
		break;

		############################################################################################
		##                            Подтверждение восстановления                                ##
		############################################################################################
		case 'send':

			$uz = check(strval($_POST['uz']));
			$email = check(strval($_POST['email']));
			$provkod = abs(intval($_POST['provkod']));

			if (!empty($uz)) {
				if (!empty($email)) {
					if ($_SESSION['protect'] == $provkod) {
						$user = DB::run() -> queryFetch("SELECT * FROM `users` WHERE `users_login`=? LIMIT 1;", array($uz));
						if (!empty($user)) {
							if ($email == $user['users_email']) {
								if ($user['users_timepasswd'] < SITETIME) {
									unset($_SESSION['protect']);

									$restkey = generate_password();

									DB::run() -> query("UPDATE `users` SET `users_keypasswd`=?, `users_timepasswd`=? WHERE `users_login`=?;", array($restkey, SITETIME + 43200, $uz));
									// ---------------- Инструкция по восстановлению пароля на E-mail --------------------------//
									addmail($user['users_email'], "Подтверждение восстановления пароля на сайте ".$config['title'], "Здравствуйте, ".nickname($user['users_login'])." \nВами была произведена операция по восстановлению пароля на сайте ".$config['home']." \n\nДанные отправителя: \nIp: $ip \nБраузер: $brow \nОтправлено: ".date('j.m.Y / H:i', SITETIME)."\n\nДля того чтобы восстановить пароль, вам необходимо перейти по ссылке: \n\n".$config['home']."/mail/lostpassword.php?act=restore&uz=".$user['users_login']."&key=".$restkey." \n\nЕсли это письмо попало к вам по ошибке или вы не собираетесь восстанавливать пароль, то просто проигнорируйте его");

									echo 'Письмо с инструкцией по востановлению пароля успешно выслано на E-mail указанный в профиле<br />';
									echo 'Внимательно прочтите письмо и выполните все необходимые действия для восстановления пароля<br />';
									echo 'Восстанавливать пароль можно не чаще чем раз в 12 часов<br /><br />';
								} else {
									show_error('Ошибка! С момента последнего восстановления пароля прошло менее 12 часов!');
								} 
							} else {
								show_error('Ошибка! Веденный вами адрес e-mail не совпадает с адресом в профиле!');
							} 
						} else {
							show_error('Ошибка! Пользователь с данным логином не зарегестрирован!');
						} 
					} else {
						show_error('Ошибка! Проверочное число не совпало с данными на картинке!');
					} 
				} else {
					show_error('Ошибка! Не введен  адрес почтового ящика для восстановления!');
				} 
			} else {
				show_error('Ошибка! Не введен  логин пользователя для восстановления!');
			} 

			echo '<img src="../images/img/back.gif" alt="image" /> <a href="lostpassword.php?act=remind&amp;uz='.$uz.'&amp;'.SID.'">Вернуться</a><br />';
		break;

		############################################################################################
		##                                Восстановление пароля                                   ##
		############################################################################################
		case 'restore':

			$uz = check($_GET['uz']);
			$key = check($_GET['key']);

			if (!empty($uz)) {
				if (!empty($key)) {
					$user = DB::run() -> queryFetch("SELECT * FROM `users` WHERE `users_login`=? LIMIT 1;", array($uz));

					if (!empty($user)) {
						if ($key == $user['users_keypasswd']) {
							$newpass = generate_password();
							$mdnewpas = md5(md5($newpass));

							DB::run() -> query("UPDATE `users` SET `users_pass`=?, `users_keypasswd`=?, `users_timepasswd`=? WHERE `users_login`=?;", array($mdnewpas, '', 0, $uz));

							echo '<b>Пароль успешно восстановлен!</b><br />';
							echo 'Ваши новые данные для входа на сайт<br /><br />';

							echo 'Логин: <b>'.$user['users_login'].'</b><br />';
							echo 'Пароль: <b>'.$newpass.'</b><br /><br />';

							echo '<img src="../images/img/open.gif" alt="image" /> ';
							echo '<b><a href="'.BASEDIR.'input.php?login='.$user['users_login'].'&amp;pass='.$newpass.'&amp;'.SID.'">Вход на сайт</a></b><br /><br />';

							echo 'Запомните и постарайтесь больше не забывать данные, а лучше сделайте сразу закладку на наш сайт '.$config['home'].'/input.php?login='.$user['users_login'].'&amp;pass='.$newpass.'<br /><br />';

							echo 'Пароль вы сможете поменять в своем профиле<br /><br />';
							// --------------------------- Восстановлению пароля на E-mail --------------------------//
							addmail($user['users_email'], "Восстановление пароля на сайте ".$config['title'], "Здравствуйте, ".nickname($user['users_login'])." \nВаши новые данные для входа на на сайт ".$config['home']." \nЛогин: ".$user['users_login']." \nПароль: ".$newpass." \n\nЗапомните и постарайтесь больше не забывать данные, а лучше сделайте сразу закладку на наш сайт \n".$config['home']."/input.php?login=".$user['users_login']."&pass=".$newpass." \nПароль вы сможете поменять в своем профиле \nВсего наилучшего!");
						} else {
							show_error('Ошибка! Секретный код в ссылке не совпадает с данными в профиле!');
						} 
					} else {
						show_error('Ошибка! Пользователь с данным логином не зарегестрирован!');
					} 
				} else {
					show_error('Ошибка! Отсутствует секретный код в ссылке для восстановления пароля!');
				} 
			} else {
				show_error('Ошибка! Отсутствует логин в ссылке для восстановления пароля!');
			} 
		break;

		############################################################################################
		##                            Ответ на секретный вопрос                                   ##
		############################################################################################
		case 'answer':

			$uz = check(strval($_POST['uz']));
			$answer = check(strval($_POST['answer']));
			$provkod = abs(intval($_POST['provkod']));

			if (!empty($uz)) {
				if (!empty($answer)) {
					if ($_SESSION['protect'] == $provkod) {
						$user = DB::run() -> queryFetch("SELECT * FROM `users` WHERE `users_login`=? LIMIT 1;", array($uz));
						if (!empty($user)) {
							if (!empty($user['users_secquest'])) {
								if (md5(md5($answer)) == $user['users_secanswer']) {
									unset($_SESSION['protect']);

									$newpass = generate_password();
									$mdnewpas = md5(md5($newpass));

									DB::run() -> query("UPDATE `users` SET `users_pass`=?, `users_keypasswd`=?, `users_timepasswd`=? WHERE `users_login`=?;", array($mdnewpas, '', 0, $uz));

									echo '<b>Пароль успешно восстановлен!</b><br />';
									echo 'Ваши новые данные для входа на сайт<br /><br />';

									echo 'Логин: <b>'.$user['users_login'].'</b><br />';
									echo 'Пароль: <b>'.$newpass.'</b><br /><br />';

									echo '<img src="../images/img/open.gif" alt="image" /> ';
									echo '<b><a href="'.BASEDIR.'input.php?login='.$user['users_login'].'&amp;pass='.$newpass.'&amp;'.SID.'">Вход на сайт</a></b><br /><br />';

									echo 'Запомните и постарайтесь больше не забывать данные, а лучше сделайте сразу закладку на наш сайт '.$config['home'].'/input.php?login='.$user['users_login'].'&amp;pass='.$newpass.'<br /><br />';

									echo 'Пароль вы сможете поменять в своем профиле<br /><br />';
								} else {
									show_error('Ошибка! Ответ на секретный вопрос не совпадает с данными в профиле!');
								} 
							} else {
								show_error('Ошибка! У данного пользователя не установлен секретный вопрос!');
							} 
						} else {
							show_error('Ошибка! Пользователь с данным логином не зарегестрирован!');
						} 
					} else {
						show_error('Ошибка! Проверочное число не совпало с данными на картинке!');
					} 
				} else {
					show_error('Ошибка! Не введен ответ на секретный вопрос для восстановления!');
				} 
			} else {
				show_error('Ошибка! Не введен логин пользователя для восстановления!');
			} 

			echo '<img src="../images/img/back.gif" alt="image" /> <a href="lostpassword.php?act=remind&amp;uz='.$uz.'&amp;'.SID.'">Вернуться</a><br />';
		break;

	default:
		redirect("lostpassword.php?".SID);
	endswitch;
		
} else {
	show_error('Ошибка! Вы авторизованы, восстановление пароля невозможно!');
} 

include_once ('../themes/footer.php');
?>