Файл: modules/profile/email.php
Строк: 163
<?
if(!defined('SHCMS_ENGINE')) {
die( "Неправильное действие" );
}
//Обработка EMAIL Адреса
if(isset($_POST['submit_email'])) {
$nemail = filter_input( INPUT_POST, 'new_email', FILTER_SANITIZE_EMAIL );
$nemail = filter_var( $nemail, FILTER_VALIDATE_EMAIL );
$aemail = filter_input( INPUT_POST, 'act_email', FILTER_SANITIZE_EMAIL );
$aemail = filter_var( $aemail, FILTER_VALIDATE_EMAIL );
$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
//Проверка на совпадений email`a
if($nemail != $aemail) {
echo engine::error(Lang::__('Введенные e-mail адреса не совпадают.'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
if( empty( $aemail ) or strlen( $aemail ) > 50 OR @count( explode( '@',$aemail ) ) != 2 ) {
echo engine::error(Lang::__('Введенный Email неверный'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Проверяем введен ли пароль
if(empty($password)) {
echo engine::error(Lang::__('Не введен пароль'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
if(strlen($password) < 5) {
echo engine::error(Lang::__('Пароль должен быть выше 5 символов'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
$row = $db->super_query( "SELECT COUNT(*) as count FROM `users` WHERE email = '$aemail'" );
if( $row['count'] ) {
echo engine::error(Lang::__('Введенный Email уже существует'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Кадировка
$shgen = engine::shgen($password);
//Проверка на правильность пароля
if($shgen != $users['password']) {
echo engine::error(Lang::__('Неверный текущий пароль'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
$mysql = $db->query("UPDATE `users` SET `new_email` = '".$db->safesql($aemail)."' 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'])) {
$password1 = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
$password = filter_input(INPUT_POST, 'new_pass', FILTER_SANITIZE_STRING);
$password2 = filter_input(INPUT_POST, 'act_pass', FILTER_SANITIZE_STRING);
//Проверяем введен ли пароль
if(empty($password1)) {
echo engine::error(Lang::__('Не введен пароль'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Кадировка в md5
$shgen1 = engine::shgen($password1);
//Проверка на правильность пароля
if($shgen1 != $users['password']) {
echo engine::error(Lang::__('Неверный текущий пароль'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Сравниваем на совпадение паролей
if($password != $password2) {
echo engine::error(Lang::__('Введенные пароли должны быть одинаковы'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Проверка пароля на допустимость символов
if (preg_match("/[^da-zA-Z_]+/", $password)){
echo engine::error(Lang::__('В пароле присутствуют недопустимые символы'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
//Проверяем на допустимость органиченных символов
if(mb_strlen($password) < 5) {
echo engine::error(Lang::__('Недопустимая длина пароля'));
echo engine::home(array(Lang::__('Назад')),'?act=email');
exit;
}
$shgenk = engine::shgen($password);
$mysql = $db->query("UPDATE `users` SET `new_pass` = '".$db->safesql($shgenk)."' 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>';
echo engine::home(array(Lang::__('Назад'),'/modules/profile.php?act=edit_profile'));