View file pages/user/recovery.php

File size: 2.86Kb
<?

if ($user) {
	Redirection('/user/');
}
$PageConfig = [
	'title' => 'Восстановление пароля',
];

PageConfig($PageConfig);

$type = 0;
if (isset($_POST['email'])) {
	$key = md5(mt_rand(1,999999) . time() . mt_rand(1,999999));
	$userses = $sql->fetch("SELECT * FROM `users` where `email` = ? LIMIT 1;",[$_POST['email']]);
	if (!$userses) {
		$err[] = 'Такого email нету в нашей базе';
	}
	if (!isset($err)) {
		$sql->query("INSERT INTO `users_recovery` (`id_user`, `key`, `date_create`) values ('{$userses['id']}', '{$key}', '". time() ."')");
		$text = "Здравствуйте $userses[login]<br />
			Вы активировали восстановление пароля<br />
			Для установки нового пароля перейдите по ссылке:<br />
			<a href='http://$_SERVER[HTTP_HOST]/user/recovery/?key=$key'>http://$_SERVER[HTTP_HOST]/user/recovery/?key=$key</a><br />
		";
		$adds  = "From: \"password@$_SERVER[HTTP_HOST]\" <password@$_SERVER[HTTP_HOST]>\n";
		$adds .= "Content-Type: text/html; charset=utf-8\n";
		mail($userses['email'],'=?utf-8?B?'.base64_encode("Восстановление пароля").'?=',$text,$adds);
		Redirection('?','Пароль выслан на email');
	}
}

if (isset($_GET['key'])) {
	$ses = $sql->fetch("SELECT * FROM `users_recovery` where `key` = ? LIMIT 1;",[$_GET['key']]);
	if (!$ses) {
		Redirection('?','Ошибка ,код недействителен');
	}
	$type = 1;
}
if (isset($err)) {
	err($err);
}
if ($type == 1) {
	if (isset($_POST['save'])) {
		$pass1 = shif($_POST['pass1']);
		$pass2 = shif($_POST['pass2']);
		
		if ($_POST['pass1'] != $_POST['pass2']) {
			$err[] = 'Новый пароль не совпадает с подтверждением';
		}
		$cp = $sql->rowCount("SELECT * FROM `users_password` WHERE `id_user` = '{$ses['id_user']}' AND `pass` = '" . shif($_POST['pass1']) . "'");
		if ($cp != 0) {
			$err[] = 'Вы уже использовпли этот пароль';
		}
		$file_default = file_get_contents(H.'core/config/if_password.txt');
		if (stripos($file_default, $_POST['pass1']) !== false || is_numeric($_POST['pass1'])) {
			$err[] = 'Пароль слишком простой';
		}
		if (!isset($err)) {
			$sql->query("UPDATE `users` SET `password` = ? WHERE `id` = ?", [shif($_POST['pass1']), $ses['id_user']]);
			$sql->query("DELETE FROM `users_recovery` WHERE `id_user` = ".$ses['id_user']);
			$_SESSION['user_id'] = $ses['id_user'];
			cookie('user_id', $ses['id_user'], $set['user_cookie']);
			cookie('user_pass', shif($_POST['pass1']), $set['user_cookie']);	
			CacheDelete::user($ses['id_user']);			
			Redirection('/user/','Пароль успешно восстановлен');
		}
	}
}

$t->assign('type', $type);
$t->assign('ses', $ses);
echo $t->fetch('user.recovery');