Вход Регистрация
Файл: core/modules/forgot.php
Строк: 133
<?php

if (!defined('CMS')) { die('Access Denied!'); }

$_SESSION['captcha_key'] = !empty($_SESSION['captcha_key']) ? $_SESSION['captcha_key'] : NULL;
$_SESSION['captcha_failures'] = !empty($_SESSION['captcha_failures']) ? $_SESSION['captcha_failures'] : 0;

if (!
$is_logged) {

    if (!empty(
$_GET['login']) && !empty($_GET['lostkey'])) {

        
$row $db->selectRow("SELECT * FROM ?_users WHERE `users_login` = ? LIMIT 1;"check($_GET['login']));

        if (!empty(
$row)) {

            if (!empty(
$row['users_keypasswd'])) {

                if (
$row['users_keypasswd'] == $_GET['lostkey']) {

                    
$newps random_string(10);
                    
$md5ps md5(md5($newps));

                    if ( 
$db->query"UPDATE ?_users SET `users_pass` = ?, `users_keypasswd` = ?, `users_timepasswd` = ?
                                      WHERE `users_login` = ?;"
$md5ps''0check($_GET['login'])) ) {

                        
$auto $config['site_url'] . '/' gen_uri('login''''login=' $row['users_login'] . '&pass=' $newps);

                        
SendMail($row['users_email'], $row['users_login'], 'Восстановление пароля на сайте ' $config['site_name'], "Здравствуйте, " nickname($row['users_login']) . " nВаши новые данные для входа на на сайт " $config['site_name'] . "rnЛогин: " $row['users_login'] . " nПароль: " $newps " nnЗапомните и постарайтесь больше не забывать данные, а лучше сделайте сразу закладку на наш сайт n" $auto " nПароль вы сможете поменять в своем профиле nВсего наилучшего!rnС уважением,rnАдминистрация  " $config['site_name'] . "rn");

                        
show_header('Восстановление пароля''''''Пароль успешно восстановлен!');
                        echo 
'<div class="bl">';
                        echo 
'Ваши новые данные для входа на сайт<br /><br />';
                        echo 
'- Логин: <b>' $row['users_login'] . '</b><br />';
                        echo 
'- Пароль: <b>' $newps '</b><br /><br />';
                        echo 
icon('site.png');
                        echo 
'<a href="' $auto '" title="Вход на сайт"><b>Вход на сайт</b></a><br /><br />';
                        echo 
'Запомните и постарайтесь больше не забывать данные, а лучше сделайте сразу закладку на наш сайт ' $auto '<br /></div>';
                        
show_footer();
                        exit;
                    }
                    else {

                        
$inSes->addMessage('Произошла Ошибка! По техническим причинам пароль не может быть восстановлен! Если ошибка повторится, сообщите об этом администрации сайта.');
                        
gen_red('forgot'''RND);
                    }
                }
                else {

                    
$inSes->addMessage('Ошибка! Пользователь с таким именем не запрашивал восстановление пароля, либо данная ссылка уже устарела. Допускается только одна попытка восстановления пароля по отправленной вам на e-mail ссылке. После чего вы должны повторно запрашивать восстановление пароля!');
                    
gen_red('forgot'''RND);
                }
            }
            else {

                
$inSes->addMessage('Ошибка! Пользователь с таким именем не запрашивал восстановление пароля, либо данная ссылка уже устарела. Допускается только одна попытка восстановления пароля по отправленной вам на e-mail ссылке. После чего вы должны повторно запрашивать восстановление пароля!');
                
gen_red('forgot'''RND);
            }
        }
        else {

            
$inSes->addMessage('Ошибка! Пользователь с данным логином не зарегестрирован!');
            
gen_red('forgot'''RND);
        }

    }

    else if (!empty(
$_POST['submit'])) {

    
$error '';
    
$code  = !empty($_POST['code']) ? check($_POST['code']) : '';

        if (empty(
$_GET['rnd']) || $_GET['rnd'] <> $_SESSION['token']) {

            
$error 'Ошибка! Неверный идентификатор сессии, повторите действие!';
        }
        else if ( empty(
$_POST['lostname']) ) {

            
$error 'Ошибка! Вы не ввели свой логин для восстановления пароля!';
        }
        else if ( 
preg_match"/[||'|<|>|[|]|"|!|?|$|/|\|&~*{+]/", $_POST['lostname'] ) ) {

        
$error = 'Ошибка! Вы используете недопустимое имя!';
        }
        else if ( 
$_SESSION['captcha_key'] === NULL || $_SESSION['captcha_key'] != $code ) {

            
$error = 'Ошибка! Проверочное число не совпало с данными на картинке!';

            if ( ++
$_SESSION['captcha_failures'] == 3 ) {

                
$error .= '<br /> - Вы ввели несколько раз подряд неверный проверочный код! Сгенерирован новый!';

                
$_SESSION['captcha_key'] = NULL;
                
$_SESSION['captcha_failures'] = 0;
            }
        }
        else 
$error = '';

        if (!empty(
$error)) {

            
$inSes->addMessage$error, 'error' );

            gen_red('forgot', '', RND);
        }
        else {

            
$lostname = check( $_POST['lostname'] );
        
            if ( @count(explode('@', 
$lostname)) == 2 ) {

                
$row = $db->selectRow( "SELECT FROM ?_users 
                                        WHERE 
`users_email` = ? LIMIT 0,1", $lostname );
                
$err = 'адресом почтового ящика';
            }
            else {

                
$row = $db->selectRow( "SELECT FROM ?_users
                                        WHERE 
`users_login` = ? LIMIT 0,1", $lostname );
                
$err = 'логином';
            }

            if (!empty(
$row)) {

                if (!empty(
$row['users_email'])) {

                    if (
$row['users_timepasswd'] < SITE_TIME) {

                        
$lostid   = $row['users_id'];
                        
$lostname = $row['users_login'];
                        
$lostmail = $row['users_email'];

                        
$lostkey  = sha1( md5( $lostname . $lostmail ) . time() . mt_rand(1,9) );

                    if ( strlen(
$lostkey) != 40 ) die ("US Secure Hash Algorithm 1 (SHA1disabled by Hosting");

                        
$lostkey = cms_substr($lostkey, 0, 19); // макс. в бд 20

                        
$lostlink = $config['site_url'] . '/' . gen_uri('forgot', '', 'login=' . $lostname . '&lostkey=' . $lostkey);

                        
$losttext = "Уважаемый {$lostname},rnrnВы сделали запрос на получение забытого пароля на сайте {$config['site_url']}.rnОднако в целях безопасности все пароли хранятся в зашифрованном видепоэтому мы не можем сообщить вам ваш старый парольпоэтому если вы хотите сгенерировать новый парользайдите по следующей ссылкеrnrn{$lostlink}rnrnЕсли это письмо попало к вам по ошибке или вы не собираетесь восстанавливать парольто просто удалите его.rnrnДанные отправителяnIp: {$ip}nБраузер: {$brow}nОтправлено" . date('j.m.Y / H:i', SITE_TIME) . "rnrnС уважением,rnАдминистрация {$config['site_name']}";

                        
$answer = SendMail( $lostmail$lostname, 'Подтверждение восстановления пароля на сайте ' . $config['site_name'], $losttext );

                        if ( 
$answer != 'ok' ) {

                            
$inSes->addMessage('Произошла Ошибка! ' . $answer);
                            gen_red('forgot', '', RND);
                        }
                        else {

                            
$db->query("UPDATE ?_users SET `users_keypasswd` = ?, `users_timepasswd` = ? 
                                        
WHERE `users_login` = ?;", $lostkey, SITE_TIME + 43200, $lostname);

                            
$_SESSION['captcha_key'] = NULL;
                            
$_SESSION['captcha_failures'] = 0;

                            show_header('Восстановление пароля');
                            echo '<div class="
bl">';
                            echo 'Письмо с инструкцией по востановлению пароля успешно выслано на E-mail указанный в профиле.<br />';
                            echo 'Внимательно прочтите письмо и выполните все необходимые действия для восстановления пароля.<br />';
                            echo 'Восстанавливать пароль можно не чаще чем раз в 12 часов<br /></div>';
                            show_footer();
                            exit();
                        }

                    }
                    else {

                        
$inSes->addMessage('Ошибка! С момента последнего восстановления пароля прошло менее 12 часов!');
                        gen_red('forgot', '', RND);
                    }
                }
                else {

                    
$inSes->addMessage('Ошибка! Нет технической возможности восстановить пароль, так как у данного пользователя не указан адрес почтового ящика!');
                    gen_red('forgot', '', RND);
                }
           }
           else {

               
$inSes->addMessage('Ошибка! Пользователь с данным ' . $err . ' не зарегестрирован в системе!');
               gen_red('forgot', '', RND);
            }
        }
    }
    else {

        show_header('Восстановление пароля');

        
$cookname = !empty($_COOKIE['cookname']) ? check($_COOKIE['cookname']) : '';

        echo '<div class="
bl text">';
        echo 'Введите свой логин или e-mail.<br />';
        echo 'Инструкция по восстановлению будет выслана на электронный адрес указанный в профиле.<br />';
        echo 'Восстанавливать пароль можно не чаще чем раз в 12 часов.</div>';

        
$form = new cmsForm(gen_uri('forgot', '', 'rnd=' . $_SESSION['token']), 'post');
        
$form->addText('Логин:', 'lostname', !empty($_POST['lostname']) ? check($_POST['lostname']) : $cookname);
        
$form->addCaptcha('Проверочный код:', 'code');
        echo 
$form->Submit('Продолжить', 'submit');
        unset(
$form);
    }
}
else {

  show_header('Восстановление пароля');
  show_error('Ошибка! Вы авторизованы, восстановление пароля невозможно!');
}

echo '<div class="
link"><a title="Авторизация" href="/' . gen_uri('login', '', RND) . '">Авторизация</a></div>';
echo '<div class="
link"><a title="Регистрация" href="/' . gen_uri('reg', '', RND) . '">Регистрация</a></div>';

?>
Онлайн: 0
Реклама