Файл: core/modules/users_account.php
Строк: 165
<?php
if (!defined('CMS')) { die('Access Denied!'); }
if ($is_logged) {
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($_POST['rnd']) && $_POST['rnd'] == md5($_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'], "Здравствуйте, " . $log . " nВами была произведена операция по изменению адреса электронной почты nnДля того, чтобы изменить e-mail, необходимо подтвердить новый адрес почты nПерейдите по данной ссылке: nn" . gen_users($uset['uid'], '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 $inSes->addMessage('Ошибка! Вы уже отправили код подтверждения на новый адрес почты!');
}
else $inSes->addMessage('Ошибка! Указанный вами адрес e-mail занесен в черный список!');
}
else $inSes->addMessage('Ошибка! Указанный вами адрес e-mail уже используется в системе!');
}
else $inSes->addMessage('Ошибка! Неправильный адрес e-mail, необходим формат name@site.domen!');
}
else $inSes->addMessage('Ошибка! Пароль не совпадает с данными в профиле!');
}
else $inSes->addMessage('Ошибка! Вы ввели ваш текущий адрес e-mail!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
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($_POST['rnd']) && $_POST['rnd'] == md5($_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) >= 5) {
$db->query("UPDATE ?_users SET `users_pass` = ? WHERE `users_login` = ?", md5(md5($newpass)), $log);
SendMail($uset['users_email'], $uset['users_login'], "Изменение пароля на сайте " . $config['site_name'], "Здравствуйте, " . $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'] . '/' . gen_uri('login', '', RND));
}
else $inSes->addMessage('Ошибка! Слишком короткий или длинный новый пароль (От 5 до 20 символов)!');
}
else $inSes->addMessage('Ошибка! Новые пароли не совпадают!');
}
else $inSes->addMessage('Ошибка! Запрещен пароль состоящий только из цифр, используйте буквы!');
}
else $inSes->addMessage('Ошибка! Пароль и логин должны отличаться друг от друга!');
}
else $inSes->addMessage('Ошибка! Текущий пароль не совпадает с данными в профиле!');
}
else $inSes->addMessage('Ошибка! Недопустимые символы в пароле, только знаки латинского алфавита, цифры и дефис!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
show_header('Мои данные');
echo '<div class="blocks"><table><tr>';
echo '<td style="width:33%"><a href="' . gen_uri('nick', '', RND) . '">Мой ник</a></td>';
echo '<td style="width:33%"><a href="' . gen_uri('nick_color', '', RND) . '">Цвет ника</a></td>';
echo '<td style="width:33%"><span>Мои данные</apan></td>';
echo '</tr></table></div>';
$form = new cmsForm('', 'post');
$form->addText('Е-mail:', 'email', $uset['users_email'], ' maxlength="70"');
$form->addText('Текущий пароль:', 'check_pswd');
$form->addHidden('rnd', md5($_SESSION['token']));
$form->Submit('Изменить', 'save_mail');
unset($form);
echo '<div class="blocks"><table><tr>';
echo '<td class="w100"><span>Изменение пароля</apan></td>';
echo '</tr></table></div>';
$form = new cmsForm('', 'post');
$form->addText('Новый пароль:', 'newpass', '', ' maxlength="20"');
$form->addText('Повторите пароль:', 'newpass2', '', ' maxlength="20"');
$form->addText('Текущий пароль:', 'oldpass', '');
$form->addHidden('rnd', md5($_SESSION['token']));
$form->Submit('Изменить', 'change_password');
unset($form);
echo show_link(gen_uri('profil', '', RND), 'Назад');
}
else {
show_header('Мои данные');
show_login('Вы не авторизованы, чтобы изменять свои данные, необходимо');
}
?>