Файл: lost_pass.php
Строк: 86
<?php
require_once ('shaxty.php');
$title = 'Восстановление пароля';
$align = 'left';
include_once ('shaxty/head.php');
function passgen($length) {
$vals = "abcdefghijklmnopqrstuvwxyz0123456789";
for ($i = 1; $i <= $length; $i++) {
$result .= $vals{rand(0, strlen($vals))};
}
return $result;
}
switch ($act) {
case 'sent0':
// Принимаем и проверяем данные
$nick = check($_POST['nick']);
$email_pass = isset($_POST['email_pass']) ? check($_POST['email_pass']) : '';
$code = isset($_POST['code']) ? check($_POST['code']) : '';
$error = false;
if (!$nick || !$email_pass)
$error = 'Необходимо заполнить все поля!';
elseif (!isset($_SESSION['code']) || strlen2($code) < 4 || $code != $_SESSION['code'])
$error = 'Проверочный код введен неверно!';
unset($_SESSION['code']);
if (!$error) {
// Проверяем данные по базе
$us2= rus_lat(rus_utf_tolower($nick));
if (ctype_digit($nick)) $sql = "`id` = '$nick'";
elseif (!ctype_digit($nick)) $sql = "`ruser` = '$us2'";
$req = mysql_query("SELECT * FROM `users` WHERE $sql LIMIT 1");
if (mysql_num_rows($req) == 1) {
$res = mysql_fetch_array($req);
if (empty($res['email_pass']) || $res['email_pass'] != $email_pass)
$error = 'E-mail адрес указан неверно';
if ($res['rest_time'] > $realtime - 86400)
$error = 'Пароль можно восстанавливать не чаще 1 раза в сутки';
} else {
$error = 'Такой пользователь не зарегистрирован';
}
}
if (!$error) {
echo '<form action="lost_pass.php?act=sent" method="post">';
echo 'Секретный вопрос: <b>'.$res['vopros_pass'].'</b> <br/><br />';
echo '<b>Ответ:</b><br/><input type="text" name="otvet_pass" /><br />';
echo '<input name="email_pass" type="hidden" value="'.$email_pass.'">
<input name="nick" type="hidden" value="'.$nick.'">
<p><input type="submit" class="ibutton" value="Далее"/></p></form>';
break;
} else {
// Выводим сообщение об ошибке
echo '<div class="rmenu"><p>' . $error . '<br /><a href="lost_pass.php">Назад</a></p></div>';
}
break;
case 'sent':
// Принимаем и проверяем данные
$nick = check($_POST['nick']);
$otvet_pass= check(rus_utf_tolower($_POST['otvet_pass']));
$email_pass = isset($_POST['email_pass']) ? check($_POST['email_pass']) : '';
//$code = isset($_POST['code']) ? check($_POST['code']) : '';
$error = false;
if (!$nick || !$email_pass || !$otvet_pass)
$error = 'Необходимо заполнить все поля!';
/* elseif (!isset($_SESSION['code']) || strlen2($code) < 4 || $code != $_SESSION['code'])
$error = 'Проверочный код введен неверно!';
unset($_SESSION['code']);*/
if (!$error) {
// Проверяем данные по базе
$us2= rus_lat(rus_utf_tolower($nick));
if (ctype_digit($nick)) $sql = "`id` = '$nick'";
elseif (!ctype_digit($nick)) $sql = "`ruser` = '$us2'";
$req = mysql_query("SELECT * FROM `users` WHERE $sql LIMIT 1");
if (mysql_num_rows($req) == 1) {
$res = mysql_fetch_array($req);
if (empty($res['email_pass']) || $res['email_pass'] != $email_pass)
$error = 'E-mail адрес указан неверно';
if (empty($res['otvet_pass']) || $res['otvet_pass'] != $otvet_pass)
$error = 'Ответ на вопрос неверен';
if ($res['rest_time'] > $realtime - 86400)
$error = 'Пароль можно восстанавливать не чаще 1 раза в сутки';
} else {
$error = 'Такой пользователь не зарегистрирован';
}
}
if (!$error) {
// Высылаем инструкции на E-mail
$subject = 'Востановление пароля';
$mail = "Здравствуйте, " . $res['user'] . "rnВы начали процедуру восстановлению пароля на сайте http://".$_SERVER['HTTP_HOST']."rn";
$mail .= "Для того чтобы восстановить пароль, вам необходимо перейти по ссылке: nn http://".$_SERVER['HTTP_HOST']."/lost_pass.php?act=set&id=" . $res['id'] . "&code=" . session_id() . "nn";
$mail .= "Ссылка действительна в течение 1 часаrn";
$mail .= "Если это письмо попало к вам по ошибке или вы не собираетесь восстанавливать пароль, то просто проигнорируйте его";
if (addmail($res['email_pass'], "Востановление пароля на сайте ".$imjasajta, $mail))
{
mysql_query("UPDATE `users` SET `rest_code` = '" . session_id() . "', `rest_time` = '$realtime' WHERE `id` = '" . $res['id'] . "'");
echo '<div class="gmenu"><p>Инструкции по восстановлению пароля высланы на указанный Вами адрес E-mail</p></div>';
} else {
echo '<div class="rmenu"><p>Ошибка отправки E-mail</p></div>';
}
} else {
// Выводим сообщение об ошибке
echo '<div class="rmenu"><p>' . $error . '<br /><a href="lost_pass.php">Назад</a></p></div>';
}
break;
case 'set':
$code = isset($_GET['code']) ? check($_GET['code']) : '';
$error = false;
if (!$id || !$code)
$error = 'Отсутствуют необходимые данные';
$req = mysql_query("SELECT * FROM `users` WHERE `id` = '$id' LIMIT 1");
if (mysql_num_rows($req) == 1) {
$res = mysql_fetch_array($req);
if (empty($res['rest_code']) || empty($res['rest_time']) || $code != $res['rest_code']) {
$error = 'Восстановление пароля невозможно';
}
if (!$error && $res['rest_time'] < $realtime - 3600) {
$error = 'Время, отведенное на восстановления пароля прошло';
mysql_query("UPDATE `users` SET `rest_code` = '', `rest_time` = '' WHERE `id` = '$id'");
}
} else {
$error = 'Такого пользователя нет';
}
if (!$error) {
// Высылаем пароль на E-mail
$pass = passgen(6);
$subject = 'Ваш новый пароль';
$mail = "Здравствуйте, " . $res['user'] . "rnВы изменили пароль на сайте " . $home . "rn";
$mail .= "Ваш новый пароль: $pass rn";
$mail .= "После входа на сайт, Вы сможете сменить пароль на другой, какой пожелаете.";
if (addmail($res['email_pass'], "Ваш новый пароль на сайте ".$imjasajta, $mail))
{
mysql_query("UPDATE `users` SET `rest_code` = '', `pass` = '" . md5(md5($pass)) . "' WHERE `id` = '$id'");
echo '<div class="gmenu"><p>Пароль успешно изменен.<br />Новый пароль выслан на ваш адрес E-mail</p></div>';
} else {
echo '<div class="rmenu"><p>Ошибка отправки E-mail</p></div>';
}
} else {
// Выводим сообщение об ошибке
echo '<div class="rmenu"><p>' . $error . '</p></div>';
}
break;
default:
echo '<form action="lost_pass.php?act=sent0" method="post">';
echo '<b>Ваш ник или id:</b><br/><input type="text" name="nick" /><br/>';
echo '<b>Ваш e-mail:</b><br/><input type="text" name="email_pass" /><br />';
echo '<img src="shaxty_code.php?r='.rand(1000, 9999).'" alt="Проверочный код"/><br />';
echo '<b>Код с картинки:</b><br/><input type="text" size="5" maxlength="5" name="code"/><br />';
echo '<p><input type="submit" class="ibutton" value="Далее"/></p></form>';
echo '<small>Пароль будет выслан на E-mail Адрес, указанный Вами.<br />ВНИМЕНИЕ! Если в анкете не был указан E-mail адрес, то Вы не сможете восстановить пароль</small><br />';
break;
}
include_once ('shaxty/foot.php');
/* by -=ШАХТЕР=- (waphp.ru - качай только тут) */ ?>