Файл: clik.online/recovery.php
Строк: 63
<?php
/**
* @author: Egor Smolyakov, 2012.
* @e-mail: mr.stelhammer@gmail.com
*/
defined('ROOT') or define('ROOT', str_replace('\', '/', realpath(dirname (__FILE__))));
require_once ROOT . '/system/init.php'; // инициализация ядра
if($is_user) {
redir(HOST);
}
page_head('Восстановление пароля'); // название страницы
if(isset($_GET['a_key']) && DB :: run() -> querySingle('select count(*) from `users` where `activate_key` = "'.protect($_GET['a_key']).'"')==1) {
$us = DB :: run() -> queryFetch('select * from `users` where `activate_key` = "'.protect($_GET['a_key']).'"');
if(!empty($_POST)) {
$new_p = protect($_POST['new_password']);
if(strlenx($new_p) < 6 or strlenx($new_p) > 32)
$error = 'Количество символов в пароле может быть от 6 до 32.';
elseif($new_p == $us['login'])
$error = 'Логин не может быть таким же как новый пароль.';
else {
DB :: run() -> query ("UPDATE `users` SET `password` = ?, `activate_key` = '' WHERE `id` = '$us[id]'", array(md5_hash($new_p)));
setcookie('login', $us['login'], time()+3600*24*365, '/');
setcookie('password', $new_p, time()+3600*24*365, '/');
echo '<div class="menu">Данные успешно обновлены.</div>';
echo '<div class="menu"><a href="'.HOST.'/">На главную</a></div>';
page_foot(); // низ сайта
}
}
if (!empty($error)) {
echo '<div class="menu">'.$error.'</div>';
}
echo '<div class="menu">
<form action="" method="POST">
Введите новый пароль:<br />
<input type="text" name="new_password" /><br />
<input type="submit" value="Сохранить" /><br />
</form>
</div>';
echo '<div class="menu"><a href="'.HOST.'/">На главную</a></div>';
page_foot(); // низ сайта
}
if(isset($_POST['log'],$_POST['captcha'])) {
$log = protect($_POST['log']);
$captcha = protect($_POST['captcha']);
if(strlenx($log) < 1 || strlenx($log) > 32)
$error = 'Пожалуйста, укажите логин или ID.';
elseif(empty($captcha))
$error = 'Введите код с картинки.';
elseif(empty($_SESSION['captcha']))
$error = 'Ошибка в сессиях.';
else {
if ($_SESSION['captcha'] != $captcha) {
$error = 'Код с картинки введен неверно.';
} else {
$us = DB :: run() -> queryFetch('select * from `users` where (`login` = "'.$log.'" OR `id` = "'.$log.'");');
if ($us > 0) {
$subject = 'Перейдите по ссылке';
$adds = "From: <$set[reg_mail]>n";
$adds .= "X-sender: <$set[reg_mail]>n";
$rand_key = md5_hash(mt_rand(500000000,2000000000000000));
$msg = 'Для смены пароля перейдите по ссылке <a href="'.HOST.'/recovery/'.$rand_key.'/">'.HOST.'/recovery/'.$rand_key.'/</a>.';
$adds .= "Content-Type: text/html; charset=utf-8n";
$subject = '=?utf-8?B?' . base64_encode($subject) . '?='; //subj encoding trouble!
@mail($us['email'],$subject,$msg,$adds);
DB :: run() -> query ("UPDATE `users` SET `activate_key` = '".$rand_key."' WHERE `id` = ?;", array($us['id']) );
echo '<div class="menu">На указанный при регистрации e-mail отправлено письмо, следуйте инструкции в нем.</div>';
unset($captcha);
}else{
$error = 'По указанным данным пользователя не найдено.';
}
}
}
}
if (!empty($error)) {
echo '<div class="menu">'.$error.'</div>';
}
echo '<div class="menu">
<form action="'.HOST.'/recovery/" method="POST">
Введите свой логин или ID:<br />
<input type="text" name="log"/><br />';
echo '<img src="'.HOST.'/captcha.jpg" alt="вкл. картинки" /> <br />
<input type="text" size="9" name="captcha"/><br />';
echo '<input type="submit" value="Отправить" /><br />
</form>
</div>';
echo '<div class="menu"><a href="'.HOST.'/">На главную</a></div>';
page_foot(); // низ сайта
?>