Файл: 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 < 1 ) {
$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, $genkey, SITE_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 < 1 && ($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('Вы не авторизованы, чтобы изменять свои данные, необходимо');
}
?>