Вход Регистрация
Файл: system/modules/restore.php
Строк: 74
<?php
/* 
    Appointment: Восстановление доступа к странице
    File: restore.php 
 
*/
if(!defined('MOZG'))
    die(
'Hacking attempt!');

if(
$ajax == 'yes')
    
NoAjaxQuery();

if(!
$logged){
    
$act $_GET['act'];
    
$metatags['title'] = $lang['restore_title'];
    
    switch(
$act){
        
        
//################### Проверка данных на воостановления ###################//
        
case "next":
            
NoAjaxQuery();
            
$email ajax_utf8(textFilter($_POST['email']));
            
$check $db->super_query("SELECT user_id, user_search_pref, user_photo FROM `".PREFIX."_users` WHERE user_email = '{$email}'");
            if(
$check){
                if(
$check['user_photo'])
                    
$check['user_photo'] = "/uploads/users/{$check['user_id']}/50_{$check['user_photo']}";
                else
                    
$check['user_photo'] = "{theme}/images/no_ava_50.png";
                
                echo 
$check['user_search_pref']."|".$check['user_photo'];
            } else
                echo 
'no_user';
            
            die();
        break;
        
        
//################### Отправка данных на почту на воостановления ###################//
        
case "send":
            
NoAjaxQuery();
            
$email ajax_utf8(textFilter($_POST['email']));
            
$check $db->super_query("SELECT user_name FROM `".PREFIX."_users` WHERE user_email = '{$email}'");
            if(
$check){
                
//Удаляем все предыдущие запросы на воостановление
                
$db->query("DELETE FROM `".PREFIX."_restore` WHERE email = '{$email}'");
                
                
$salt "abchefghjkmnpqrstuvwxyz0123456789";
                for(
$i 0$i 15$i++){
                    
$rand_lost .= $salt{rand(033)};
                }
                
$hash md5($server_time.$email.rand(0100000).$rand_lost.$check['user_name']);

                
//Вставляем в базу
                
$db->query("INSERT INTO `".PREFIX."_restore` SET email = '{$email}', hash = '{$hash}', ip = '{$_IP}'");
                
                
//Отправляем письмо на почту для воостановления
                
include_once ENGINE_DIR.'/classes/mail.php';
                
$mail = new dle_mail($config);
                
$message = <<<HTML
Здравствуйте, {$check['user_name']}.

Чтобы сменить ваш пароль, пройдите по этой ссылке:
{$config['home_url']}restore?act=prefinish&h={$hash}

Мы благодарим Вас за участие в жизни нашего сайта.

{$config['home_url']}
HTML;
                
$mail->send($email$lang['lost_subj'], $message);
            }
            die();
        break;
        
        
//################### Страница смены пароля ###################//
        
case "prefinish":
            
$hash $db->safesql(strip_data($_GET['h']));
            
$row $db->super_query("SELECT email FROM `".PREFIX."_restore` WHERE hash = '{$hash}' AND ip = '{$_IP}'");
            if(
$row){
                
$info $db->super_query("SELECT user_name FROM `".PREFIX."_users` WHERE user_email = '{$row['email']}'");
                
$tpl->load_template('restore/prefinish.tpl');
                
$tpl->set('{name}'$info['user_name']);
                
                
$salt "abchefghjkmnpqrstuvwxyz0123456789";
                for(
$i 0$i 15$i++){
                    
$rand_lost .= $salt{rand(033)};
                }
                
$newhash md5($server_time.$row['email'].rand(0100000).$rand_lost);
                
$tpl->set('{hash}'$newhash);
                
$db->query("UPDATE `".PREFIX."_restore` SET hash = '{$newhash}' WHERE email = '{$row['email']}'");
                
                
$tpl->compile('content');    
            } else {
                
$speedbar $lang['no_infooo'];
                
msgbox(''$lang['restore_badlink'], 'info');
            }
        break;
        
        
//################### Смена пароля ###################//
        
case "finish":
            
NoAjaxQuery();
            
$hash $db->safesql(strip_data($_POST['hash']));
            
$row $db->super_query("SELECT email FROM `".PREFIX."_restore` WHERE hash = '{$hash}' AND ip = '{$_IP}'");
            if(
$row){

                
$_POST['new_pass'] = ajax_utf8($_POST['new_pass']);
                
$_POST['new_pass2'] = ajax_utf8($_POST['new_pass2']);
                
                
$new_pass md5(md5($_POST['new_pass']));
                
$new_pass2 md5(md5($_POST['new_pass2']));
                
                if(
strlen($new_pass) >= AND $new_pass == $new_pass2){
                    
$db->query("UPDATE `".PREFIX."_users` SET user_password = '{$new_pass}' WHERE user_email = '{$row['email']}'");
                    
$db->query("DELETE FROM `".PREFIX."_restore` WHERE email = '{$row['email']}'");
                }
            }
            die();
        break;
        
        default:
            
$tpl->load_template('restore/main.tpl');
            
$tpl->compile('content');    
    }
    
$tpl->clear();
    
$db->free();
} else {
    
$user_speedbar $lang['no_infooo'];
    
msgbox(''$lang['not_logged'], 'info');
}
?>
Онлайн: 0
Реклама