<?
//Обработка EMAIL Адреса
if(isset($_POST['submit_email'])) {
$new_email = isset($_POST['new_email']) ? trim($_POST['new_email']) : '';
$act_email = isset($_POST['act_email']) ? trim($_POST['act_email']) : '';
$pass = isset($_POST['password']) ? trim($_POST['password']) : '';
//Проверка на совпадений email`a
if($new_email != $act_email) {
echo engine::error(Lang::__('Введенные e-mail адреса не совпадают.'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Проверяем введен ли пароль
if(empty($pass)) {
echo engine::error(Lang::__('Не введен пароль'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Кадировка в md5
$password = md5(md5($pass));
//Проверка на правильность пароля
if($password != $users['password']) {
echo engine::error(Lang::__('Неверный текущий пароль'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Если введенный вами Email уже существует в базе выводит вам ошибку
$regmail = $db->query("SELECT * FROM `users` WHERE `email` = '" . $db->safesql($new_email) ."'");
if ($db->get_array($regemail) != 0) {
echo engine::error(Lang::__('Введенный вами Email занят '));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Проверяем правильно ли введен Email
$valid_email = filter_var($new_email, FILTER_VALIDATE_EMAIL);
$valid_email2 = filter_var($act_email, FILTER_VALIDATE_EMAIL);
if($valid_email === false and $valid_email2 === false) {
echo engine::error(Lang::__('Некорректный E-mail адрес'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
$mysql = $db->query("UPDATE `users` SET `new_email` = '".$db->safesql($act_email)."' WHERE `id` = ".$id_user."");
if($mysql == true) {
$mail = new Mail($users['email']); // Создаём экземпляр класса
$mail->setFromName("SHCMS Engine"); // Устанавливаем имя в обратном адресе
$mail->send($users['email'], "Информация о смене Email адреса",
"Здравствуйте, ".$users['nick']."!<br/>
Вы получили это письмо от http://".$_SERVER['HTTP_HOST'].", потому что запросили изменение E-mail.<br/>
<hr/>
Инструкция по активации
<hr/>
Вам необходимо будет активировать изменение e-mail адреса, это необходимо для проверки того, что это действие сделали именно вы. Также это требуется для защиты от нежелательных злоупотреблений и спама.<br/>
Введите указанные ниже ID пользователя и код активации (не пароль!) в соответствующие поля.<hr/>
<b>ID пользователя:</b> ".$users['id']."<br/>
<b>Ключ активации: </b> ".$users['key']."<br/>
");
header('Location: ?act=act_email');
exit;
}else {
echo engine::error(Lang::__('Ошибка при смене E-mail адреса'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
}
//Обработка пароля
if(isset($_POST['submit_pass'])) {
$pass = isset($_POST['password']) ? trim($_POST['password']) : '';
$new_pass = isset($_POST['new_pass']) ? trim($_POST['new_pass']) : '';
$act_pass = isset($_POST['act_pass']) ? trim($_POST['act_pass']) : '';
//Проверяем введен ли пароль
if(empty($pass)) {
echo engine::error(Lang::__('Не введен пароль'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Кадировка в md5
$password = md5(md5($pass));
//Проверка на правильность пароля
if($password != $users['password']) {
echo engine::error(Lang::__('Неверный текущий пароль'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Сравниваем на совпадение паролей
if($new_pass != $act_pass) {
echo engine::error(Lang::__('Введенные вами пароли не совпадают'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Проверка пароля на допустимость символов
if (preg_match("/[^\da-zA-Z_]+/", $new_pass)){
echo engine::error(Lang::__('В пароле присутствуют недопустимые символы'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Проверяем на допустимость органиченных символов
if(mb_strlen($new_pass) < 2 || mb_strlen($new_pass) > 30) {
echo engine::error(Lang::__('Недопустимая длина пароля'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
$password_key = md5(md5($new_pass));
$mysql = $db->query("UPDATE `users` SET `new_pass` = '".$db->safesql($password_key)."' WHERE `id` = '".$users['id']."'");
if($mysql == true) {
$mail = new Mail($users['email']); // Создаём экземпляр класса
$mail->setFromName("SHCMS Engine"); // Устанавливаем имя в обратном адресе
$mail->send($users['email'], "Информация о смене Пароля",
"Здравствуйте, ".$users['nick']."!<br/>
Вы получили это письмо от http://".$_SERVER['HTTP_HOST'].", потому что запросили изменение Пароля.<br/>
<hr/>
Инструкция по активации
<hr/>
Вам необходимо будет активировать изменение пароля, это необходимо для проверки того, что это действие сделали именно вы. Также это требуется для защиты от нежелательных злоупотреблений и спама.<br/>
Введите указанные ниже код активации (не пароль!) в соответствующие поля.<hr/>
<b>Ключ активации: </b> ".$users['key']."<br/>
");
header('Location: ?act=act_pass');
exit;
}else {
echo engine::error(Lang::__('Ошибка при смене Пароля'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
}
//Информация необходимаЯ
echo '<div class="subpost">Вы можете оставить поле пустым, если не хотите обновлять его. Например, вы можете изменить ваш e-mail адрес без заполнения поля \'Пароль\' в конце.</div>';
echo '<div class="mainname">'.Lang::__('Изменение e-mail адреса').'</div>';
echo '<div class="mainpost">';
if(!$users['key']) {
echo engine::error(Lang::__('Для смени Email адреса необходим "Ключ активации"'));
echo '<div class="subpost">Ключ дается сразу после регистрации на сайте если он у вас отсутствует то обратитесь к администратору сайта!</div>';
echo engine::home(array(Lang::__('Назад')),'?act=edit_profile');
exit;
}else {
//Действующий email адрес пользователя
echo '<b>'.Lang::__('Ваш текущий e-mail адрес:').'</b> '.$users['email'].'<br/><br/>';
//Форма смены email адреса
$form = new form('?act=email');
//Новый email адрес
$form->input(Lang::__('Введите новый e-mail адрес:'),'new_email','text');
//Подтвержение email адреса
$form->input(Lang::__('Повторите новый e-mail адрес'),'act_email','text');
//Действующий пароль пользователя
$form->input(Lang::__('Текущий пароль'),'password','password');
$form->text('<br/><div class="submit">');
//Сохраняем
$form->submit(Lang::__('Сохранить'),'submit_email');
$form->text('</div>');
$form->display();
}
echo '</div>';
//Новый пароль
echo '<div class="mainname">'.Lang::__('Новый пароль').'</div>';
echo '<div class="mainpost">';
$form = new form('?act=email');
//Действующий пароль пользователя
$form->input(Lang::__('Текущий пароль'),'password','password');
//Новый пароль
$form->input(Lang::__('Введите ваш НОВЫЙ пароль'),'new_pass','password');
//Подтвержение нового пароля
$form->input(Lang::__('Подтверждение нового пароля'),'act_pass','password');
$form->text('<br/><div class="submit">');
//Сохраняем
$form->submit(Lang::__('Сохранить'),'submit_pass');
$form->text('</div>');
$form->display();
echo '</div>';