View file modules/profile/email.php

File size: 9.87Kb
<?
    //Обработка 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>';