View file modules/profile/email.php

File size: 10.15Kb
<?
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'));