<?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/header.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="user.php?'.SID.'">Моя анкета</a> / ';
echo '<a href="profile.php?'.SID.'">Мой профиль</a> / ';
echo '<b>Мои данные</b><hr />';
echo '<b><big>Изменение E-mail</big></b><br />';
echo '<div class="form">';
echo '<form method="post" action="account.php?act=changemail&uid='.$_SESSION['token'].'&'.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 />';
############################################################################################
## Изменение ника ##
############################################################################################
echo '<b><big>Изменение ника</big></b><br />';
if ($udata['users_point'] >= $config['editnickpoint']) {
echo '<div class="form">';
echo '<form method="post" action="account.php?act=editnick&uid='.$_SESSION['token'].'&'.SID.'">';
echo 'Ваш ник:';
if (!empty($udata['users_nickname'])) {
echo ' (<a href="account.php?act=delnick&uid='.$_SESSION['token'].'&'.SID.'">Удалить</a>)';
}
echo '<br />';
echo '<input name="nickname" maxlength="20" value="'.$udata['users_nickname'].'" />';
echo '<input value="Изменить" type="submit" /></form></div><br />';
} else {
show_error('Изменять ник могут пользователи у которых более '.points($config['editnickpoint']).'!');
}
############################################################################################
## Изменение персонального статуса ##
############################################################################################
if (!empty($config['editstatus'])) {
echo '<b><big>Изменение статуса</big></b><br />';
if ($udata['users_point'] >= $config['editstatuspoint']) {
echo '<div class="form">';
echo '<form method="post" action="account.php?act=editstatus&uid='.$_SESSION['token'].'&'.SID.'">';
echo 'Персональный статус:';
if (!empty($udata['users_status'])) {
echo ' (<a href="account.php?act=delstatus&uid='.$_SESSION['token'].'&'.SID.'">Удалить</a>)';
}
echo '<br />';
echo '<input name="status" maxlength="20" value="'.$udata['users_status'].'" />';
echo '<input value="Изменить" type="submit" /></form>';
if (!empty($config['editstatusmoney'])) {
echo '<br />Стоимость: '.moneys($config['editstatusmoney']);
}
echo '</div><br />';
} else {
show_error('Изменять статус могут пользователи у которых более '.points($config['editstatuspoint']).'!');
}
}
############################################################################################
## Восстановление пароля ##
############################################################################################
echo '<b><big>Восстановление пароля</big></b><br />';
echo '<div class="form">';
echo '<form method="post" action="account.php?act=editsec&uid='.$_SESSION['token'].'&'.SID.'">';
echo 'Секретный вопрос:';
if (!empty($udata['users_secquest'])) {
echo ' (<a href="account.php?act=delsec&uid='.$_SESSION['token'].'&'.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&uid='.$_SESSION['token'].'&'.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 'changemail':
$uid = check($_GET['uid']);
$meil = strtolower(check($_POST['meil']));
$provpass = check($_POST['provpass']);
if ($uid == $_SESSION['token']) {
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::run() -> querySingle("SELECT `users_id` FROM `users` WHERE `users_email`=? LIMIT 1;", array($meil));
if (empty($regmail) && ($log==$config['nickname'] || $meil!=$config['emails'])) {
$blackmail = DB::run() -> querySingle("SELECT `black_id` FROM `blackmail` WHERE `black_mail`=? LIMIT 1;", array($meil));
if (empty($blackmail)) {
DB::run() -> query("DELETE FROM `changemail` WHERE `change_time`<?;", array(SITETIME));
$changemail = DB::run() -> querySingle("SELECT `change_id` FROM `changemail` WHERE `change_user`=? LIMIT 1;", array($log));
if (empty($changemail)) {
$genkey = generate_password(rand(15,20));
addmail($udata['users_email'], "Изменение адреса электронной почты на сайте ".$config['title'], "Здравствуйте, ".nickname($log)." \nВами была произведена операция по изменению адреса электронной почты \n\nДля того, чтобы изменить e-mail, необходимо подтвердить новый адрес почты \nПерейдите по данной ссылке: \n\n".$config['home']."/pages/account.php?act=editmail&key=".$genkey." \n\nСсылка будет дейстительной в течении суток до ".date('j.m.y / H:i', SITETIME + 86400).", для изменения адреса необходимо быть авторизованным на сайте \nЕсли это сообщение попало к вам по ошибке или вы не собираетесь менять e-mail, то просто проигнорируйте данное письмо");
DB::run() -> query("INSERT INTO `changemail` (`change_user`, `change_mail`, `change_key`, `change_time`) VALUES (?, ?, ?, ?);", array($log, $meil, $genkey, SITETIME + 86400));
$_SESSION['note'] = 'На новый адрес почты отправлено письмо для подтверждения!';
redirect("account.php?".SID);
} else {
show_error('Ошибка! Вы уже отправили код подтверждения на новый адрес почты!');
}
} 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('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
echo '<img src="../images/img/back.gif" alt="image" /> <a href="account.php?'.SID.'">Вернуться</a><br />';
break;
############################################################################################
## Изменение e-mail ##
############################################################################################
case 'editmail':
$key = check(strval($_GET['key']));
if (!empty($key)) {
DB::run() -> query("DELETE FROM `changemail` WHERE `change_time`<?;", array(SITETIME));
$armail = DB::run() -> queryFetch("SELECT * FROM `changemail` WHERE `change_key`=? AND `change_user`=? LIMIT 1;", array($key, $log));
if (!empty($armail)) {
if ($armail['change_mail'] != $udata['users_email']) {
if (preg_match('#^([a-z0-9_\-\.])+\@([a-z0-9_\-\.])+(\.([a-z0-9])+)+$#', $armail['change_mail'])) {
$regmail = DB::run() -> querySingle("SELECT `users_id` FROM `users` WHERE `users_email`=? LIMIT 1;", array($armail['change_mail']));
if (empty($regmail) && ($log==$config['nickname'] || $armail['change_mail']!=$config['emails'])) {
$blackmail = DB::run() -> querySingle("SELECT `black_id` FROM `blackmail` WHERE `black_mail`=? LIMIT 1;", array($armail['change_mail']));
if (empty($blackmail)) {
DB::run() -> query("UPDATE `users` SET `users_email`=? WHERE `users_login`=? LIMIT 1;", array($armail['change_mail'], $log));
DB::run() -> query("DELETE FROM `changemail` WHERE `change_key`=? AND `change_user`=? LIMIT 1;", array($key, $log));
$_SESSION['note'] = 'Адрес электронной почты успешно изменен!';
redirect("account.php?".SID);
} else {
show_error('Ошибка! Указанный вами адрес e-mail занесен в черный список!');
}
} else {
show_error('Ошибка! Указанный вами адрес e-mail уже используется в системе!');
}
} else {
show_error('Неправильный адрес e-mail, необходим формат [email protected]!');
}
} else {
show_error('Ошибка! Текущий адрес e-mail совпадает с новым адресом!');
}
} else {
show_error('Ошибка! Данный код изменение электронной почты не найден в списке!');
}
} else {
show_error('Ошибка! Вы не ввели код изменения электронной почты!');
}
echo '<img src="../images/img/back.gif" alt="image" /> <a href="account.php?'.SID.'">Вернуться</a><br />';
break;
############################################################################################
## Удаление статуса ##
############################################################################################
case 'delstatus':
$uid = check($_GET['uid']);
if ($uid == $_SESSION['token']) {
if (!empty($config['editstatus'])) {
if (empty($udata['users_ban'])) {
if ($udata['users_point'] >= $config['editstatuspoint']) {
if (!empty($udata['users_nickname'])) {
DB::run() -> query("UPDATE `users` SET `users_status`=? WHERE `users_login`=? LIMIT 1;", array('', $log));
save_title();
$_SESSION['note'] = 'Ваш статус успешно удален!';
redirect("account.php?".SID);
} 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;
############################################################################################
## Изменение статуса ##
############################################################################################
case 'editstatus':
$uid = check($_GET['uid']);
$status = check(trim($_POST['status']));
if ($uid == $_SESSION['token']) {
if (!empty($config['editstatus'])) {
if (empty($udata['users_ban'])) {
if ($udata['users_point'] >= $config['editstatuspoint']) {
if ($udata['users_money'] >= $config['editstatusmoney']) {
if (utf_strlen($status) >= 3 && utf_strlen($status) <= 20) {
if ($status != $udata['users_status']) {
$checkstatus = DB::run() -> querySingle("SELECT `users_id` FROM `users` WHERE lower(`users_status`)=? LIMIT 1;", array(utf_lower($status)));
if (empty($checkstatus)) {
DB::run() -> query("UPDATE `users` SET `users_status`=?, users_money=users_money-? WHERE `users_login`=? LIMIT 1;", array($status, $config['editstatusmoney'], $log));
save_title();
$_SESSION['note'] = 'Ваш статус успешно изменен!';
redirect("account.php?".SID);
} else {
show_error('Ошибка! Выбранный вами статус уже используется на сайте!');
}
} else {
show_error('Ошибка! У вас уже установлен выбранный вами статус!');
}
} else {
show_error('Ошибка! Слишком длинный или короткий статус! (от 3 до 20 символов)');
}
} 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;
############################################################################################
## Удаление ника ##
############################################################################################
case 'delnick':
$uid = check($_GET['uid']);
if ($uid == $_SESSION['token']) {
if ($udata['users_point'] >= $config['editnickpoint']) {
if (!empty($udata['users_nickname'])) {
DB::run() -> query("UPDATE `users` SET `users_nickname`=?, `users_timenickname`=? WHERE `users_login`=? LIMIT 1;", array('', SITETIME + 86400, $log));
save_nickname();
$_SESSION['note'] = 'Ваш ник успешно удален!';
redirect("account.php?".SID);
} 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'] >= $config['editnickpoint']) {
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::run() -> querySingle("SELECT `users_id` FROM `users` WHERE lower(`users_login`)=? LIMIT 1;", array(utf_lower($nickname)));
if (empty($reglogin)) {
$regnick = DB::run() -> querySingle("SELECT `users_id` FROM `users` WHERE lower(`users_nickname`)=? LIMIT 1;", array(utf_lower($nickname)));
if (empty($regnick)) {
$blacklogin = DB::run() -> querySingle("SELECT `black_id` FROM `blacklogin` WHERE lower(`black_login`)=? LIMIT 1;", array(strtolower($nickname)));
if (empty($blacklogin)) {
DB::run() -> query("UPDATE `users` SET `users_nickname`=?, `users_timenickname`=? WHERE `users_login`=? LIMIT 1;", array($nickname, SITETIME + 86400, $log));
save_nickname();
$_SESSION['note'] = 'Ваш ник успешно изменен!';
redirect("account.php?".SID);
} 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::run() -> query("UPDATE `users` SET `users_secquest`=?, `users_secanswer`=? WHERE `users_login`=? LIMIT 1;", array('', '', $log));
$_SESSION['note'] = 'Секретный вопрос и ответ успешно удалены!';
redirect("account.php?".SID);
} 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::run() -> query("UPDATE `users` SET `users_secquest`=?, `users_secanswer`=? WHERE `users_login`=? LIMIT 1;", array($secquest, md5(md5($secanswer)), $log));
$_SESSION['note'] = 'Секретный вопрос и ответ успешно изменены!';
redirect("account.php?".SID);
} 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) >= 3 && strlen($newpass) <= 20) {
DB::run() -> query("UPDATE `users` SET `users_pass`=? WHERE `users_login`=? LIMIT 1;", 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'] = 'Пароль успешно изменен!';
redirect("login.php?".SID);
} 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:
redirect("account.php?".SID);
endswitch;
} else {
show_login('Вы не авторизованы, чтобы изменять свои данные, необходимо');
}
include_once ('../themes/footer.php');
?>