Файл: remind.php
Строк: 45
<?php
include 'system/sys.php';
include 'system/funcs.php';
if (isset ($us)) {
header ('location: /');
exit;
}
H ('Восстановление пароля', 'Восстановление пароля');
if (isset ($_GET['key'])) {
if (!isset ($_GET['key'])) {
header ('location: /remind.php');
exit;
}
$query = DB :: $dbs -> query ("SELECT * FROM `pass` WHERE (`key`=?)", array (htmlspecialchars (addslashes (trim ($_GET['key'])))));
if ($query -> rowCount () == 0) {
header ('location: /remind.php');
exit;
}
$pass = $query -> fetch ();
if ((time () - $pass['t']) > 86400) {
echo '<div class="list1"><b>Ключ не действителен!</b></div>';
}
else {
echo '<div class="list1">';
echo '<form method="post" action="/remind.php?key=' . $pass['key'] . '&save">';
echo 'Новый пароль:<br/><input name="pass"/><br/>';
echo 'Повторите новый пароль:<br/><input name="pass2"/><br/>';
echo '<input type="submit" value="Сохранить" />';
echo '</form>';
echo '</div>';
if (isset ($_GET['save'])) {
$_POST['pass'] = htmlspecialchars (addslashes (trim ($_POST['pass'])));
$_POST['pass2'] = htmlspecialchars (addslashes (trim ($_POST['pass2'])));
if (empty ($_POST['pass'])) {
echo '<div class="list1"><b>Вы не ввели новый пароль..</b></div>';
}
elseif (empty ($_POST['pass2'])) {
echo '<div class="list1"><b>Вы не ввели повторный пароль..</b></div>';
}
elseif ($_POST['pass'] != $_POST['pass2']) {
echo '<div class="list1"><b>Пароли не совпадают!</b></div>';
}
else {
DB :: $dbs -> query ("UPDATE `us` SET `pass`=? WHERE (`id`='" . $pass['us'] . "')", array (md5 ($_POST['pass'])));
DB :: $dbs -> query ("DELETE FROM `pass` WHERE (`us`='" . $pass['us'] . "')");
setcookie ('pass', md5 ($_POST['pass']), time () + 86400 * 365, '/');
setcookie ('id', $pass['us'], time () + 86400 * 365, '/');
echo '<div class="list1"><b>Новый пароль успешно установлен!</b></div>';
header ('refresh: 1; url=/');
}
}
}
}
else {
if (isset ($_GET['ok'])) {
if (!isset ($_POST['id'])) {
header ('location: /remind.php');
exit;
}
$query = DB :: $dbs -> query ("SELECT * FROM `us` WHERE (`id`=?)", array (intval ($_POST['id'])));
if ($query -> rowCount () == 0) {
header ('location: /remind.php');
exit;
}
$u = $query -> fetch ();
$key = passgen ();
$query = DB :: $dbs -> query ("SELECT * FROM `pass` WHERE (`us`='" . $u['id'] . "')");
if ($query -> rowCount () == 0) {
DB :: $dbs -> query ("INSERT INTO `pass` (`us`,`key`,`t`) VALUES ('" . $u['id'] . "', '" . $key . "', '" . time () . "')");
}
else {
$pass = $query -> fetch ();
if ((time () - $pass['t']) < 3600) {
header ('location: /remind.php');
exit;
}
DB :: $dbs -> query ("UPDATE `pass` SET `key`='" . $key . "',`t`='" . time () . "' WHERE (`id`='" . $u['id'] . "')");
}
$subject = 'Восстановление пароля';
$text .= 'Здравствуйте ' . $u['nick'] . '<br/>';
$text .= 'Для установки нового пароля перейдите по ссылке: <a href="http://php-zona.ru/remind.php?key=' . $key . '">http://php-zona.ru/remind.php?key=' . $key . '</a><br/>';
$text .= 'Ключ действителен в течение 24 часов после отправки на email!<br/>';
$text .= 'С уважением, администрация проекта!<br />';
$adds = "From: "support@php-zona.ru" <support@php-zona.ru>n";
$adds .= "content-type: text/html; charset=utf-8n";
mail ($u['email'], '=?utf-8?B?' . base64_encode ($subject) . '?=', $text, $adds);
echo '<div class="list1"><b>Инструкции по установке нового пароля отправлены на указанный при регистрации email!</b></div>';
header ('refresh: 5; url=/remind.php');
}
echo '<div class="list1">';
echo '<form method="post" action="/remind.php?ok">';
echo 'Ваш Id:<br/><input name="id"/><br/>';
echo '<input type="submit" value="Восстановить" />';
echo '</form>';
echo '</div>';
echo '<div class="list1">* Повторная отправка будет возможна только через 1 час!</div>';
}
F ();
?>