View file pages/account.php

File size: 19.01Kb
<?php
#-----------------------------------------------------#
#          ********* ROTORCMS *********               #
#              Made by  :  VANTUZ                     #
#               E-mail  :  [email protected]         #
#                 Site  :  http://pizdec.ru           #
#             WAP-Site  :  http://visavi.net          #
#                  ICQ  :  36-44-66                   #
#  Вы не имеете право вносить изменения в код скрипта #
#        для его дальнейшего распространения          #
#-----------------------------------------------------#	
require_once ('../includes/start.php');
require_once ('../includes/functions.php');
require_once ('../includes/header.php');
include_once ('../themes/' . $config['themes'] . '/index.php');

if (isset($_GET['act'])) {
  $act = check($_GET['act']);
} else {
  $act = 'index';
} 

show_title('setting.png', 'Мои данные');
$config['newtitle'] = 'Мои данные';

if (is_user()) {
  switch ($act):
  # ###########################################################################################
  # #                                    Изменение e-mail                                    ##
  # ###########################################################################################
  case 'index':

    echo '<img src="../images/img/document.gif" alt="image" /> ';
    echo '<a href="anketa.php?' . SID . '">Моя анкета</a> / ';
    echo '<a href="profil.php?' . SID . '">Мой профиль</a> / ';
    echo '<b>Мои данные</b><hr />';

    echo '<b><big>Изменение E-mail</big></b><br />';

    if (empty($udata['users_email']) || $udata['users_point'] >= 150) {
      echo '<div class="form">';
      echo '<form method="post" action="account.php?act=editmail&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">';
      echo 'Е-mail:<br />';
      echo '<input name="meil" maxlength="50" value="' . $udata['users_email'] . '" /><br />';
      echo 'Текущий пароль:<br />';
      echo '<input name="provpass" type="password" /><br />';
      echo '<input value="Изменить" type="submit" /></form></div><br />';
    } else {
      show_error('Изменять e-mail могут пользователи у которых более ' . points(150) . '!');
    } 
    # ###########################################################################################
    # #                                Изменение ника                                          ##
    # ###########################################################################################
    echo '<b><big>Изменение ника</big></b><br />';

    if ($udata['users_point'] >= 300) {
      echo '<div class="form">';
      echo '<form method="post" action="account.php?act=editnick&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">';
      echo 'Ваш ник:';

      if (!empty($udata['users_nickname'])) {
        echo ' (<a href="account.php?act=delnick&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Удалить</a>)';
      } 

      echo '<br />';
      echo '<input name="nickname" maxlength="20" value="' . $udata['users_nickname'] . '" /><br />';
      echo '<input value="Изменить" type="submit" /></form></div><br />';
    } else {
      show_error('Изменять ник могут пользователи у которых более ' . points(300) . '!');
    } 
    # ###########################################################################################
    # #                                Восстановление пароля                                   ##
    # ###########################################################################################
    echo '<b><big>Восстановление пароля</big></b><br />';
    echo '<div class="form">';
    echo '<form method="post" action="account.php?act=editsec&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">';
    echo 'Секретный вопрос:';

    if (!empty($udata['users_secquest'])) {
      echo ' (<a href="account.php?act=delsec&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Удалить</a>)';
    } 

    echo '<br /><input name="secquest" maxlength="50" value="' . $udata['users_secquest'] . '" /><br />';
    echo 'Ответ на вопрос:<br /><input name="secanswer" maxlength="30" /><br />';
    echo 'Текущий пароль:<br /><input name="provpass" maxlength="20" /><br />';
    echo '<input value="Изменить" type="submit" /></form></div><br />';
    # ###########################################################################################
    # #                                    Изменение пароля                                    ##
    # ###########################################################################################
    echo '<b><big>Изменение пароля</big></b><br />';

    echo '<div class="form">';
    echo '<form method="post" action="account.php?act=editpass&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">';
    echo 'Новый пароль:<br /><input name="newpass" maxlength="20" /><br />';
    echo 'Повторите пароль:<br /><input name="newpass2" maxlength="20" /><br />';
    echo 'Текущий пароль:<br /><input name="oldpass" maxlength="20" /><br />';
    echo '<input value="Изменить" type="submit" /></form></div><br />';
    break;
  # ###########################################################################################
  # #                                     Изменение e-mail                                   ##
  # ###########################################################################################
  case 'editmail':

    $uid = check($_GET['uid']);
    $meil = strtolower(check($_POST['meil']));
    $provpass = check($_POST['provpass']);

    if ($uid == $_SESSION['token']) {
      if (empty($udata['users_email']) || $udata['users_point'] >= 150) {
        if ($meil != $udata['users_email']) {
          if (md5(md5($provpass)) == $udata['users_pass']) {
            if (preg_match('#^([a-z0-9_\-\.])+\@([a-z0-9_\-\.])+(\.([a-z0-9])+)+$#', $meil)) {
              $regmail = DB :: $dbh -> querySingle("SELECT `users_id` FROM `users` WHERE `users_email`=? LIMIT 1;", array($meil));
              if (empty($regmail)) {
                $blackmail = DB :: $dbh -> querySingle("SELECT `black_id` FROM `blackmail` WHERE `black_mail`=? LIMIT 1;", array($meil));
                if (empty($blackmail)) {
                  DB :: $dbh -> query("UPDATE `users` SET `users_email`=? WHERE `users_login`=?", array($meil, $log));

                  $_SESSION['note'] = 'Ваши данные успешно изменены!';
                  header ("Location: account.php?" . SID);
                  exit;
                } else {
                  show_error('Ошибка! Указанный вами адрес e-mail занесен в черный список!');
                } 
              } else {
                show_error('Ошибка! Указанный вами адрес e-mail уже используется в системе!');
              } 
            } else {
              show_error('Неправильный адрес e-mail, необходим формат [email protected]!');
            } 
          } else {
            show_error('Ошибка! Пароль не совпадает с данными в профиле!');
          } 
        } else {
          show_error('Ошибка! Вы ввели ваш текущий адрес e-mail!');
        } 
      } else {
        show_error('Изменять e-mail могут пользователи у которых более ' . points(150) . '!');
      } 
    } else {
      show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="account.php?' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                     Удаление ника                                      ##
  # ###########################################################################################
  case 'delnick':

    $uid = check($_GET['uid']);
    if ($uid == $_SESSION['token']) {
      if ($udata['users_point'] >= 150) {
        if (!empty($udata['users_nickname'])) {
          DB :: $dbh -> query("UPDATE `users` SET `users_nickname`=?, `users_timenickname`=? WHERE `users_login`=?", array('', SITETIME + 86400, $log));

          save_nickname();

          $_SESSION['note'] = 'Ваш ник успешно удален!';
          header ("Location: account.php?" . SID);
          exit;
        } else {
          show_error('Ошибка! У вас не установлен ник!');
        } 
      } else {
        show_error('Ошибка! У вас недостаточно актива для изменения ника!');
      } 
    } else {
      show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="account.php?' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                     Изменение ника                                     ##
  # ###########################################################################################
  case 'editnick':

    $uid = check($_GET['uid']);
    $nickname = check(trim($_POST['nickname']));

    if ($uid == $_SESSION['token']) {
      if ($udata['users_point'] >= 150) {
        if ($udata['users_timenickname'] < SITETIME) {
          if (preg_match('|^[0-9a-zA-Zа-яА-ЯЁё_\.\-\s]+$|u', $nickname)) {
            if (utf_strlen($nickname) >= 3 && utf_strlen($nickname) <= 20) {
              if ($nickname != $udata['users_nickname']) {
                $reglogin = DB :: $dbh -> querySingle("SELECT `users_id` FROM `users` WHERE lower(`users_login`)=? LIMIT 1;", array(rus_utf_tolower($nickname)));
                if (empty($reglogin)) {
                  $regnick = DB :: $dbh -> querySingle("SELECT `users_id` FROM `users` WHERE lower(`users_nickname`)=? LIMIT 1;", array(rus_utf_tolower($nickname)));
                  if (empty($regnick)) {
                    $blacklogin = DB :: $dbh -> querySingle("SELECT `black_id` FROM `blacklogin` WHERE lower(`black_login`)=? LIMIT 1;", array(strtolower($nickname)));
                    if (empty($blacklogin)) {
                      DB :: $dbh -> query("UPDATE `users` SET `users_nickname`=?, `users_timenickname`=? WHERE `users_login`=?", array($nickname, SITETIME + 86400, $log));

                      save_nickname();

                      $_SESSION['note'] = 'Ваш ник успешно изменен!';
                      header ("Location: account.php?" . SID);
                      exit;
                    } else {
                      show_error('Ошибка! Выбранный вами ник занесен в черный список!');
                    } 
                  } else {
                    show_error('Ошибка! Выбранный вами ник уже занят!!');
                  } 
                } else {
                  show_error('Ошибка! Выбранный вами ник используется кем-то в качестве логина!');
                } 
              } else {
                show_error('Ошибка! Вы уже используете выбранный вами ник!');
              } 
            } else {
              show_error('Ошибка! Слишком длинный или короткий ник! (от 3 до 20 символов)');
            } 
          } else {
            show_error('Недопустимые символы, разрешены символы русского и латинского алфавита, а также цифры!');
          } 
        } else {
          show_error('Ошибка! Изменять ник можно не чаще чем 1 раз в сутки!');
        } 
      } else {
        show_error('Ошибка! У вас недостаточно актива для изменения ника!');
      } 
    } else {
      show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="account.php?' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                   Удаление вопроса                                     ##
  # ###########################################################################################
  case 'delsec':

    $uid = check($_GET['uid']);
    if ($uid == $_SESSION['token']) {
      if (!empty($udata['users_secquest'])) {
        DB :: $dbh -> query("UPDATE `users` SET `users_secquest`=?, `users_secanswer`=? WHERE `users_login`=?", array('', '', $log));

        $_SESSION['note'] = 'Секретный вопрос и ответ успешно удалены!';
        header ("Location: account.php?" . SID);
        exit;
      } else {
        show_error('Ошибка! У вас не установлен секретный вопрос!');
      } 
    } else {
      show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="account.php?' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                    Изменение вопроса                                   ##
  # ###########################################################################################
  case 'editsec':

    $uid = check($_GET['uid']);
    $secquest = check($_POST['secquest']);
    $secanswer = check($_POST['secanswer']);
    $provpass = check($_POST['provpass']);

    if ($uid == $_SESSION['token']) {
      if (md5(md5($provpass)) == $udata['users_pass']) {
        if (utf_strlen($secquest) >= 3 && utf_strlen($secquest) <= 50) {
          if (utf_strlen($secanswer) >= 3 && utf_strlen($secanswer) <= 30) {
            DB :: $dbh -> query("UPDATE `users` SET `users_secquest`=?, `users_secanswer`=? WHERE `users_login`=?", array($secquest, md5(md5($secanswer)), $log));

            $_SESSION['note'] = 'Секретный вопрос и ответ успешно изменены!';
            header ("Location: account.php?" . SID);
            exit;
          } else {
            show_error('Ошибка! Слишком длинный или короткий секретный ответ (от 3 до 30 символов)!');
          } 
        } else {
          show_error('Ошибка! Слишком длинный или короткий секретный вопрос (от 3 до 50 символов)!');
        } 
      } else {
        show_error('Ошибка! Текущий пароль не совпадает с данными в профиле!');
      } 
    } else {
      show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="account.php?' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                     Изменение пароля                                   ##
  # ###########################################################################################
  case 'editpass':

    $uid = check($_GET['uid']);
    $newpass = check($_POST['newpass']);
    $newpass2 = check($_POST['newpass2']);
    $oldpass = check($_POST['oldpass']);

    if ($uid == $_SESSION['token']) {
      if (preg_match('|^[a-z0-9\-]+$|i', $newpass)) {
        if (md5(md5($oldpass)) == $udata['users_pass']) {
          if ($log != $newpass) {
            if (!ctype_digit($newpass)) {
              if ($newpass == $newpass2) {
                if (strlen($newpass) <= 20 && strlen($newpass) >= 3) {
                  DB :: $dbh -> query("UPDATE `users` SET `users_pass`=? WHERE `users_login`=?", array(md5(md5($newpass)), $log));

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

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

                  $_SESSION['note'] = 'Пароль успешно изменен!';
                  header ("Location: login.php?" . SID);
                  exit;
                } else {
                  show_error('Ошибка! Слишком длинный или короткий новый пароль (От 3 до 20 символов)!');
                } 
              } else {
                show_error('Ошибка! Новые пароли не совпадают!');
              } 
            } else {
              show_error('Ошибка! Запрещен пароль состоящий только из цифр, используйте буквы!');
            } 
          } else {
            show_error('Ошибка! Пароль и логин должны отличаться друг от друга!');
          } 
        } else {
          show_error('Ошибка! Текущий пароль не совпадает с данными в профиле!');
        } 
      } else {
        show_error('Недопустимые символы в пароле, только знаки латинского алфавита, цифры и дефис!');
      } 
    } else {
      show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="account.php?' . SID . '">Вернуться</a><br />';
    break;

  default:
    header("location: account.php?" . SID);
    exit;
    endswitch;
  } else {
  show_login('Вы не авторизованы, чтобы изменять свои данные, необходимо');
} 

echo '<img src="../images/img/homepage.gif" alt="image" /> <a href="../index.php?' . SID . '">На главную</a>';

include_once ("../themes/" . $config['themes'] . "/foot.php");

?>