Файл: lost_pass.php
Строк: 73
<?
require 'config.php';
$align='left';
$title='Восстановление пароля';
include 'style/head.php';
if (empty($act))
{
echo '<form action="?act=act&'.SID.'" method="post">';
echo 'Ваш ник или id:<br /><input name="nick" title="Ваш ник или id"/><br/>';
echo 'Email:<br /><input name="email" title="email"/><br/>';
$chislo=rand(1000,9999);
$db->sql_query("DELETE FROM `chislo` WHERE `ip` = '".$ip."'");
$db->sql_query("INSERT INTO `chislo` (chislo,ip) values('$chislo','".$ip."')");
echo ' <b>'.$chislo.'</b><br/>Проверочный код:<br/>
<input type="text" name="code" size="4" maxlength="4" title="code"/><br/><br />';
echo '<input type="submit" class="button" value="Выслать пароль"/></form><br />';
}
else if ($act=='act')
{
$nick = check($_POST['nick']);
$email = check($_POST['email']);
if (!user($nick))$err = 'Такого пользователя не существует!';
$email0=user_inf($nick,'email');
if ($email0=='')$err = 'У вас не указан email!';
else if ($email0!=$email)$err = 'email введен неверно!';
$online = $db->sql_fetchrow($db->sql_query("SELECT * FROM `chislo` WHERE `ip` = '".$ip."'"));
if($online['chislo'] != intval($_POST['code']))$err = 'Проверочный код введен неверно!';
if (user_inf($nick,'rest_time') > $time - 86400)$err = 'Пароль можно восстанавливать не чаще 1 раза в сутки';
if (empty($err))
{
$msgemail = "Здравствуйте ".user_inf($nick,'user')."n Вы запросили восстановление пароля в чате http://".$_SERVER['HTTP_HOST']."nЛогин: ".user_inf($nick,'user')."nНовый пароль: ".$newpass."nnС уважением, Администрация ".$_SERVER['HTTP_HOST']."n";
$msgemail = "Здравствуйте, " . user_inf($nick,'user') . "rnВы начали процедуру восстановлению пароля в чате http://".$_SERVER['HTTP_HOST']."rnДля того чтобы восстановить пароль, вам необходимо перейти по ссылке: nn http://".$_SERVER['HTTP_HOST']."/lost_pass.php?act=set&id=" . user_inf($nick) . "&code=". session_id() . "nnСсылка действительна в течение 1 часаrnЕсли это письмо попало к вам по ошибке или вы не собираетесь восстанавливать пароль, то просто проигнорируйте его.";
addmail($email0, 'Восстановление пароля', $msgemail);
$db->sql_query("UPDATE `users` SET `rest_code` = '" . session_id() . "', `rest_time` = '$time' WHERE `id` = '" . user_inf($nick) . "'");
echo 'Инструкции по восстановлению пароля высланы на E-mail: '.$email0.'';
}
else echo $err;
}
else if ($act=='set')
{
$code = isset($_GET['code']) ? trim($_GET['code']) : '';
$nick = isset($_GET['id']) ? trim(intval($_GET['id'])) : '';
if (!user($nick))$err = 'Такого пользователя не существует!';
$email0=user_inf($nick,'email');
if ($code != user_inf($nick,'rest_code')) $err = 'Восстановление пароля невозможно';
if (user_inf($nick,'rest_time') < $time - 3600)
{
$err = 'Время, отведенное на восстановления пароля прошло';
$db->sql_query("UPDATE `users` SET `rest_code` = '', `rest_time` = '' WHERE `id` = '$id'");
}
if (empty($err))
{
$newpass = passgen(6);
$mail = "Здравствуйте, " . user_inf($nick,'user') . "rnВы изменили пароль в чате http://".$_SERVER['HTTP_HOST']."rn";
$mail .= "Ваш новый пароль: $newpass rn";
$mail .= "После входа на сайт, Вы сможете сменить пароль на другой, какой пожелаете.";
if (addmail($email0, "Ваш новый пароль", $mail))
{
$db->sql_query("UPDATE `users` SET `rest_code` = '', `pass` = '" . md5($newpass) . "' WHERE `id` = '$id'");
echo 'Пароль успешно изменен.<br />Новый пароль выслан на ваш адрес E-mail<br />';
}
else
{
echo 'Ошибка отправки E-mail<br />';
}
}
else echo $err;
}
include 'style/foot.php';
?>