Файл: pages/user/recovery.php
Строк: 23
<?
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-8n";
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');