Вход Регистрация
Файл: modules/lostpass.php
Строк: 193
<?
define
('SHCMS_ENGINE',true);
include_once(
'../engine/system/core.php');
engine::auth();
$templates->template(Lang::__('Восстановление пароля')); //Название
   
            //Если авторизован пользователь то переадресация на главную
        
if($id_user == true) { //$id_user - id пользователя 
            
header("Location: ../index.php"); //Переадресация
            
exit; //Закрыть дальнейщее действие
        
}       
    
//Функция для работы с несколькими страницами
    
switch($do):
    
    default:
    
//Если нажата кнопка submit то выполняем действие
    
if(isset($_POST['submit'])) {
        
//Если в $_POST найден логин то переобрабатываем в обычную $login
        
if(isset($_POST['login'])) {
            
$login $_POST['login']; // из $_POST в обычную $
        
}
            
            
//Проверяем введен ли логин
            
if(empty($login)) {
                echo 
engine::error('<b>Обнаружены следующие ошибки:</b><br/>Вы не ввели логин'); //Ошибка
                
echo engine::home(array(Lang::__('Назад'),'lostpass.php')); //Переадресация 
                
exit; //Дальше не пропускать
            
}
            
//Получаем необходимые данные из users
            
$lostpass $db->get_array($db->query("SELECT * FROM `users` WHERE `nick`='" $db->safesql($login) ."'"));
                
//Проверяем существует ли введенный логин
                
if ($lostpass['nick'] == false) {
                    echo 
engine::error('Введенный логин: не существует!'); //Ошибка
                //Если введенный ник найден в базе то 
                
}elseif($lostpass['nick'] == true) {
                    echo 
'<div style="color:green;" class="mainname">Введенный Ник найден в базе!</div>'//Выводит текст о том что найден ник введенный
                     
$nick $user->users($lostpass['id'],array('nick'),true); //Получаем ник по id
                     
                     //Выводит необходимые данные на страницу
                     
echo '<div class="subpost">
                     <b>Ник: </b><a href="'
.PROFILE.'?id='.$lostpass['id'].'">'.$nick.'</a><br/>
                     <b>Последний визит: </b> '
.date::make_date($lostpass['lastdate']).'<br/>
                     <b>Email:</b> '
.engine::email_block($lostpass['email']).'
                     </div>'
;
                    
//Подтверждение о том что вы являетесь создателем профиля
                    
echo '<div class="mainname">Пройдите инструкцию ниже указанное!</div>';
                    
//Текст с формой
                    
echo '<div class="mainpost">';
                    
//Форма
                    
$form = new form('?do=my_profile&id='.$lostpass['id'].'');
                    
$form->text('<div class="subpost">Подтвержению что создателем профиля <a href="'.PROFILE.'?id='.$lostpass['id'].'"><b>'.$nick.'</b></a> являюсь я!</div><div class="submit">');
                    
$form->submit('Подтвержение','submit'); //Подтверждение
                    
$form->text('или <a class="cancel" href="?do=cancel">Отмена</a>'); //При отмене
                    
$form->text('</div>');
                    
$form->display();
                    echo 
'</div>';
                }
    
//Если не нажата кнопка submit            
    
}else {
    
//Описание
echo '<div style="color:red;" class="mainname">Восстановление пароля</div>';
echo 
'<div class="mainpost">';
echo 
'При помощи данной формы вы можете сбросить ваш текущий пароль. Введите ваш логин и e-mail адрес в соответствующие поля формы. Данные не чувствительны к регистру букв. 
После отправки формы, вы получите письмо с просьбой о подтверждении запроса, а так же ссылкой на дальнейшие инструкции.'
;
echo 
'</div>';

//Восстановление пароля
echo '<div class="mainname">Восстановление пароля</div>';
echo 
'<div class="mainpost">';
//Форма 
$form = new form('?');
$form->input(Lang::__('Введите ваш Логин'),'login','text');
$form->text('<div class="submit">');
$form->submit(Lang::__('Отправить'),'submit'); //Отправляем данные
$form->text('</div>');
$form->display();

echo
'</div>';
}
echo 
'</div>';

    break;
    
    
    
//Отправка данных на Email по выбору
    
case 'my_profile':
    
    
$id = (int) $_GET['id']; //Проверяем есть ли в $id номерованные числа
    
    //Получаем данные из базы users
    
$profile $db->get_array($db->query("SELECT * FROM `users` WHERE `id` = '".$id."'"));
        
        
//Передаем данные по методу Введения нового пароля вручную
        
if($glob_core['method_pass'] == 1) {
        
//Если существует Email
        
if($profile['email'] == true) {
                
                
//Если все правильно введено и текст отправлен на Email
                
$mail = new mail($glob_core['from_email']); //Email Сайта
                
$mail->setFromName($glob_core['name_site']); // Устанавливаем имя в обратном адресе
                
if($glob_core['html_email'] == 1) {
                
$email $mail->send_html($profile['email'], "Восстановление пароля""Чтобы восстановить ваш пароль перейдите по ссылке: <hr/>http://$_SERVER[HTTP_HOST]/modules/lostpass.php?do=change&id=" .$id"&code=" session_id() . "");
                }elseif(
$glob_core['html_email'] == 2) {
                
$email $mail->send($profile['email'], "Восстановление пароля""Чтобы восстановить ваш пароль перейдите по ссылке: <hr/>http://$_SERVER[HTTP_HOST]/modules/lostpass.php?do=change&id=" .$id"&code=" session_id() . "");}
                if(
$email){
                    
//Обновляем данные и создаем сессию для ввода нового пароля к ограничению
                    
$db->query("UPDATE `users` SET `lostpass_n` = '" session_id() . "', `lostpass_t` = '".time()."' WHERE `id` = '" .$id."'");
                    
//Подтверждение данных
                    
echo '<div class="mainname">'.Lang::__('Подтверждение').'</div>';
                    
//Текст о том что данные отправлены на почту
                    
echo '<div class="subpost">'.Lang::__('Все данные были отправлены на ваш E-mail зайдите на вашу почту и закончите процесс.').'</div>';
                    echo 
engine::home(array(Lang::__('Назад'),'/modules/lostpass.php')); //Переадресация
                

                else {
                    
//Если же на почту ничего не отправили то выводит ошибку ниже
                    
echo '<div class="mainname">'.Lang::__('Ошибка').'</div>';//Заголовок ошибки
                    
echo '<div class="subpost">'.Lang::__('Возникла ошибка при восстановление пароля, пожалуйста повторите попытку!').'</div>'//Описание
                    
echo engine::home(array(Lang::__('Назад'),'/modules/lostpass.php')); //Переадресация
                
}
                        
                        }
        
// 2 метов получения нового пароля по генерации автоматически                
        
}elseif($glob_core['method_pass'] == 2) {
                
//Получаем один сгенерированный пароль
                
$generate $db->get_array($db->query("SELECT * FROM `users` WHERE `id` = '".$id."'"));
            
//Если введена email    
            
if($profile['email'] == true) {
               
//Обновляем базу и добавляем один генерированный пароль
                
$db->query("UPDATE `users` SET `generate` = '".engine::generate(6)."' WHERE `id` = '".$id."'"); 
                    
//Заголовок
                     
$subject Lang::__('Восстановление пароля');
                    
//Описание
                    
$mail .= Lang::__("Вы успешно сменили пароль.").
                                        Ваш новый пароль: "
.$generate['generate']."nn";
                    
$adds ="From: SHCMS Engine <".$glob_core['from_email'].">rn" 
                    
$adds .= "Content-Type: text/plain; charset="utf-8"rn";
                    
                        
//Если все правильно введено и текст отправлен на Email
                        
if (mail($profile['email'], $subject$mail$adds)) {
                            
//Если все правильно то обновляем пароль и удалем старый временно-сгенерированный пароль
                            
$password $db->query("UPDATE `users` SET `generate` = '',`lostpass_n` = '', `password` = '" md5(md5($generate['generate'])) . "' WHERE `id` = '".$id."'");
                                
//Уведомление
                                
if($password == true) {
                                    echo 
engine::success(Lang::__('Пароль успешно изменен'),Lang::__('Новый пароль отправлен вам на эл. ящик')); //Текст при успешно смене
                                    
echo engine::home(array(Lang::__('Назад'),'/modules/lostpass.php')); //Переадресация
                                    
exit;            
                                }else {
                                    echo 
engine::error(Lang::__('Ошибка при смене пароля')); //Если ошибки
                                    
echo engine::home(array(Lang::__('Назад'),'/modules/lostpass.php')); //Переадресация            
                                
}
                        } 
                            else {
                            
//Если не отправлены данные то выводит ошибку
                            
echo '<div class="mainname">'.Lang::__('Ошибка').'</div>'//Заголовок
                            
echo '<div class="subpost">'.Lang::__('Возникла ошибка при восстановление пароля, пожалуйста повторите попытку!').'</div>'//Текст
                            
echo engine::home(array(Lang::__('Назад'),'/modules/lostpass.php')); //Переадресация
                        
}               
    
            } 
//End
        
}        //End
    //Exit Страницу    
    
break;
    
    
//Если вы выбрали метод смена пароля вручную то переадрисуюет по почте сюда
    
case 'change':
    
    
    
$id = (int) $_GET['id']; //Проверяем есть ли в $id номерованные числа
    
    //Из _POST в обычную $
    
if(isset($_GET['code'])) {
        
$code $_GET['code'];
    }
    
//Текст при смене
    
echo '<div class="mainname">'.Lang::__('Смена пароля').'</div>';
    echo 
'<div class="mainpost">';
        
//Получаем данные базы users
        
$new $db->get_array($db->query("SELECT * FROM `users` WHERE `id` = '".$id."'"));
        
        
//Если предаствленная вами сессия окончена то выводит ошибку
        
if ($new['lostpass_t'] < (time()-3600)) {
                echo 
engine::error(Lang::__('Время восстановления пароля исчерпано'));
                
$db->query("UPDATE `users` SET `lostpass_n` = '', `lostpass_t` = '' WHERE `id` = '".$id."'");
                echo 
engine::home(array(Lang::__('Назад'),'/modules/lostpass.php')); //Переадресация
                
exit;
        }
        
        
//Если сгенерированный код не получен
        
if($new['lostpass_n'] != $code) {
                echo 
engine::error(Lang::__('Смена пароля невозможно'));
                echo 
engine::home(array(Lang::__('Назад'),'/modules/lostpass.php')); //Переадресация
                
exit;        
        }
        
    
//Если нажата кнопка
    
if(isset($_POST['submit'])) {
        
//Из _POST в обычную $
        
if(isset($_POST['password1'])) {
               
$password1 $_POST['password1'];
        }
            
//Из _POST в обычную $
            
if(isset($_POST['password2'])) {
                   
$password2 $_POST['password2'];
            }    
        
//Если не совпадают пароли
        
if($password1 != $password2) {
        echo 
engine::error(Lang::__('Введенные пароли не совпадают'));
        echo 
engine::home(array(Lang::__('Назад'),'/modules/lostpass.php?do=change&id='.$id.'&code='.$code.'')); //Переадресация
        
exit;        
    }
    
//Если не введен пароль
    
if(empty($password1)) {
        echo 
engine::error(Lang::__('Не введен пароль'));
        echo 
engine::home(array(Lang::__('Назад'),'/modules/lostpass.php?do=change&id='.$id.'&code='.$code.'')); //Переадресация
        
exit;        
    }
    
//Если ввденные пароли превышают ограничение по введению то выведит ошибку
    
if(mb_strlen($password1) < || mb_strlen($password1) > 30) {
        echo 
engine::error(Lang::__('Недопустимая длина пароля')); //Текст
        
echo engine::home(array(Lang::__('Назад'),'/modules/lostpass.php?do=change&id='.$id.'&code='.$code.'')); //Переадресация
        
exit;               
    }

        
//Если все правильно то обновляем старный пароль и удалем сессию
        
$password $db->query("UPDATE `users` SET `lostpass_n` = '', `password` = '" .engine::shgen($password1). "' WHERE `id` = '".$id."'");
        
//Если все правильно
        
if($password == true) {
            echo 
engine::success(Lang::__('Пароль успешно изменен')); //Текст
            
echo engine::home(array(Lang::__('Назад'),'/modules/lostpass.php')); //Переадресация
            
exit;            
        }else {
            
//При ошибке
            
echo engine::error(Lang::__('Ошибка при смене пароля')); //Текст
            
echo engine::home(array(Lang::__('Назад'),'/modules/lostpass.php?do=change&id='.$id.'&code='.$code.'')); //Переадресация            
        
}
    }
     
    
//Форма обновления пароля
    
$form = new form('?do=change&id='.$id.'&code='.$code.'');
    
$form->input(Lang::__('Новый пароль:'),'password1','text');
    
$form->input(Lang::__('Подтверждение:'),'password2','text');
    
$form->submit(Lang::__('Отправить','submit'));
    
$form->display();
    echo 
'</div>';
    
    
    break; 
//exit 
endswitch;     //exit module lostpass
?>
Онлайн: 2
Реклама