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

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

if (
$is_logged) {

    
$error '';

    if (!empty(
$_POST['save_mail'])) { // Изменение e-mail

        
$mail = !empty($_POST['email'])      ? cms_tolower(check($_POST['email'])) : '';
        
$pswd = !empty($_POST['check_pswd']) ? check($_POST['check_pswd'])         : '';

        if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

          if (
$mail != $uset['users_email']) {

            if (
md5(md5($pswd)) == $uset['users_pass']) {

              if (
preg_match('#^([a-z0-9_-.])+@([a-z0-9_-.])+(.([a-z0-9])+)+$#'$mail)) {

                
$is_user = (int) $db->selectCell("SELECT `users_id` FROM ?_users WHERE `users_email` = ? LIMIT 1;"$mail);

                if (
$is_user 1) {

                  
$is_black = (int) $db->selectCell("SELECT `id` FROM ?_users_black_list WHERE `email` = ? LIMIT 1;"$mail);

                  if ( 
$is_black ) {

                    
$db->query("DELETE FROM ?_users_change_mail WHERE `change_time` < ?;"SITE_TIME);

                    
$is_change = (int) $db->selectCell("SELECT `change_id` FROM ?_users_change_mail WHERE `change_user` = ? LIMIT 1;"$log); 

                    if (
$is_change 1) {

                      
$genkey random_string(mt_rand(10,20));
                                                                            
                      
$answer SendMail($uset['users_email'], $uset['users_login'], "Изменение адреса электронной почты на сайте " $config['site_name'], "Здравствуйте, " nickname($log) . " nВами была произведена операция по изменению адреса электронной почты nnДля того, чтобы изменить e-mail, необходимо подтвердить новый адрес почты nПерейдите по данной ссылке: nn" gen_users($log'account''''change=1&key=' $genkey) . " nnСсылка будет дейстительной в течении суток до " date('j.m.y / H:i'SITE_TIME 86400) . ", для изменения адреса необходимо быть авторизованным на сайте nЕсли это сообщение попало к вам по ошибке или вы не собираетесь менять e-mail, то просто проигнорируйте данное письмоn");

                      if ( 
$answer != 'ok' ) {

                          
$inSes->addMessage('Произошла Ошибка! ' $answer);
                      }
                      else {
                        
                          
$db->query("INSERT INTO ?_users_change_mail (`change_user`, `change_mail`, `change_key`, `change_time`) 
                                      VALUES (?, ?, ?, ?);"
$log$mail$genkeySITE_TIME 86400);

                          
$inSes->addMessage('На новый адрес почты отправлено письмо для подтверждения!''ok');
                      }

                      
gen_red('start'''RND);

                    }
                    else 
$error 'Вы уже отправили код подтверждения на новый адрес почты!';
                  }
                  else 
$error 'Указанный вами адрес e-mail занесен в черный список!';
                }
                else 
$error 'Указанный вами адрес e-mail уже используется в системе!';
              }
              else 
$error 'Неправильный адрес e-mail, необходим формат name@site.domen!';
            }
            else 
$error 'Пароль не совпадает с данными в профиле!';
          }
          else 
$error 'Вы ввели ваш текущий адрес e-mail!';
        }
        else 
$error 'Неверный идентификатор сессии, повторите действие!';

        if (!empty(
$error)) $inSes->addMessage('Ошибка! ' $error'error');
    }

    else if (!empty(
$_GET['change'])) {

        
$key = !empty($_REQUEST['key']) ? check($_REQUEST['key']) : '';

        
$db->query("DELETE FROM ?_users_change_mail WHERE `change_time` < ?;"SITE_TIME);

        if (!empty(
$key)) {

            
$armail $db->selectRow("SELECT * FROM ?_users_change_mail WHERE `change_key` = ? AND `change_user` = ? LIMIT 1;"$key$log);

            if (!empty(
$armail)) {

                if (
$armail['change_mail'] != $uset['users_email']) {

                    if (
preg_match('#^([a-z0-9_-.])+@([a-z0-9_-.])+(.([a-z0-9])+)+$#'$armail['change_mail'])) {
                            
                        
$is_user = (int) $db->selectCell("SELECT `users_id` FROM ?_users WHERE `users_email` = ? LIMIT 1;"$armail['change_mail']);

                        if (
$is_user && ($log == $config['nickname'] || $armail['change_mail'] != $config['email'])) {

                            
$is_black = (int) $db->selectCell("SELECT `id` FROM ?_users_black_list WHERE `email` = ? LIMIT 1;"$armail['change_mail']);

                            if (
$is_black 1) {
                                            
                                
$db->query("UPDATE ?_users SET `users_email` = ? WHERE `users_login` = ? LIMIT 1;"$armail['change_mail'], $log);

                                
$db->query("DELETE FROM ?_users_change_mail WHERE `change_key` = ? AND `change_user` = ? LIMIT 1;"$key$log);

                                
$inSes->addMessage('Адрес электронной почты успешно изменен!''ok');

                                
gen_red('start'''RND);
                            }
                            else 
$inSes->addMessage('Ошибка! Указанный вами адрес e-mail занесен в черный список!');
                        }
                        else 
$inSes->addMessage('Ошибка! Указанный вами адрес e-mail уже используется в системе!');
                    }
                    else 
$inSes->addMessage('Неправильный адрес e-mail, необходим формат name@mail.ru!');
                }
                else 
$inSes->addMessage('Ошибка! Текущий адрес e-mail совпадает с новым адресом!');
            }
            else 
$inSes->addMessage('Ошибка! Данный код изменение электронной почты не найден в списке!');
        }
        else 
$inSes->addMessage('Ошибка! Вы не ввели код изменения электронной почты');
    }


    else if (!empty(
$_POST['change_password'])) { // Изменение пароля

        
$newpass  = !empty($_POST['newpass'])  ? check($_POST['newpass'])  : '';
        
$newpass2 = !empty($_POST['newpass2']) ? check($_POST['newpass2']) : '';
        
$oldpass  = !empty($_POST['oldpass'])  ? check($_POST['oldpass'])  : '';

        if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

            if (
preg_match('|^[a-z0-9-]+$|i'$newpass)) {

                if (
md5(md5($oldpass)) == $uset['users_pass']) {

                    if (
$log != $newpass) {

                        if (!
ctype_digit($newpass)) {

                            if (
$newpass == $newpass2) {

                                if (
cms_strlen($newpass) <= 20 && cms_strlen($newpass) >= 3) {

                                    
$db->query("UPDATE ?_users SET `users_pass` = ? WHERE `users_login` = ?"md5(md5($newpass)), $log);

                                    
SendMail($uset['users_email'], $uset['users_login'], "Изменение пароля на сайте " $config['site_name'], "Здравствуйте, " nickname($log) . " nВами была произведена операция по изменению пароля nnВаш новый пароль: " $newpass " nСохраните его в надежном месте nnДанные инициализации: nIP: " $ip " nБраузер: " $brow " nВремя: " date('j.m.y / H:i'SITE_TIME));

                                    unset(
$_SESSION['log']);
                                    unset(
$_SESSION['par']);

                                    
$inSes->addMessage('Пароль успешно изменен!''ok');

                                    
redirect($config['site_url'] . DS gen_uri('login'''RND));
                                }
                                else 
$error 'Слишком длинный или короткий новый пароль (От 3 до 20 символов)!';
                            }
                            else 
$error 'Новые пароли не совпадают!';
                        }
                        else 
$error 'Запрещен пароль состоящий только из цифр, используйте буквы!';
                    }
                    else 
$error 'Пароль и логин должны отличаться друг от друга!';
                }
                else 
$error 'Текущий пароль не совпадает с данными в профиле!';
            }
            else 
$error 'Недопустимые символы в пароле, только знаки латинского алфавита, цифры и дефис!';
        }
        else 
$error 'Неверный идентификатор сессии, повторите действие!';

        if (!empty(
$error)) $inSes->addMessage('Ошибка! ' $error'error');
    }

    
show_header('Мои данные');

    echo 
'<div class="b">' icon('anketa.gif''icons');
    echo 
' <a href="' gen_uri('anketa') . '">Моя анкета</a> | ';
    echo 
'<a href="' gen_uri('profil') . '">Мой профиль</a> | ';
    echo 
'<b>Мои данные</b> / ';
    echo 
'<a href="' gen_uri('setting') . '">Мои настройки</a></div>';
    echo 
'<div class="b"><a href="' gen_uri('nick'''RND) . '"><b>Изменение ника</b></a> | ';
    echo 
'<a href="' gen_uri('nick_color') . '"><b>Изменение цвета ника</b></a> | ';
    echo 
'<b>Изменение E-Mail</b><br /></div>';

    
$form = new cmsForm('?rnd=' $_SESSION['token']);
    
$form->addText('Е-mail:''email'$uset['users_email'], ' maxlength="70"');
    
$form->addText('Текущий пароль:''check_pswd');
    
$form->Submit('Изменить''save_mail');
    unset(
$form);
    echo 
'<div class="b"><b>Изменение пароля</b><br /></div>';
    
$form = new cmsForm('?rnd=' $_SESSION['token']);
    
$form->addText('Новый пароль:''newpass'''' maxlength="20"');
    
$form->addText('Повторите пароль:''newpass2'''' maxlength="20"');
    
$form->addText('Текущий пароль:''oldpass''');
    
$form->Submit('Изменить''change_password');
    unset(
$form);
}
else {

    
show_header('Мои данные');
    
show_login('Вы не авторизованы, чтобы изменять свои данные, необходимо');
}

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