Просмотр файла 2/3020.ru/main/password.php

Размер файла: 7.33Kb
<?php

/*
---------------------
Восстановление пароля
---------------------
*/ 

ACCESS('guests'); 
  
//Навигация
ECHO "<div class='navigation'>";
ECHO "<a href='?'>".ICONS('home', 25, 'fa-fw')."</a>";
ECHO "".ICONS('angle-right', 20, 'fa-fw')."";
ECHO "".LG('Восстановление пароля')."";
ECHO "</div>";

//Установка нового пароля
IF (GET('id') && GET('hash') && DB::GET_COLUMN("SELECT COUNT(*) FROM `USERS` WHERE `ID` = '".INTVAL($_GET['id'])."' AND `EMAIL_HASH` = '".TEXT_ABSOLUTE($_GET['hash'])."' LIMIT 1") == 1){
  
  $user = DB::GET_STRING("SELECT * FROM `USERS` WHERE `ID` = '".INTVAL($_GET['id'])."' AND `EMAIL_HASH` = '".TEXT_ABSOLUTE($_GET['hash'])."' LIMIT 1");
  
  IF (POST('ok')){
    
    $password1 = POST('password1');
    $password2 = POST('password2');
    
    $world_set_update = $password1;
    $file_default = FILE_GET_CONTENTS(ROOT.'/system/config/password.txt');
    
    IF (STRIPOS($file_default, $world_set_update) !== FALSE) {
      
      ERROR('Пароль слишком простой. Придумайте более сложный используя и цифры и буквы вместе', 'session');
      $err_data = 1;
    
    }
    
    IF (!PREG_MATCH("#^([A-z0-9\-\_])+$#ui", $password1)) {
      
      ERROR('В пароле присутствуют запрещенные символы. Используйте только буквы английского алфавита и цифры', 'session');
      $err_data = 1;
    
    }
    
    IF (STR($password1) > 20){
      
      ERROR('Пароль не может быть больше 20 символов', 'session');
      $err_data = 1;
    
    }
    
    IF (STR($password1) < 8){
      
      ERROR('Пароль не может быть меньше 8 символов', 'session');
      $err_data = 1;
    
    }
    
    IF ($password1 != $password2){
      
      ERROR('Пароли не совпадают', 'session');
      $err_data = 1;
    
    }
    
    IF (!POST('captcha') OR !POST('captcha_key')) {
      
      ERROR('Вы не ввели числа с картинки', 'session');
      $err_data = 1;
    
    }
    
    IF (MD5((int)POST('captcha') + $captcha_random_seed) != POST('captcha_key')) {
      
      ERROR('Числа с картинки введены неверно', 'session');
      $err_data = 1;
    
    }
    
    IF ($err_data == 1){
      
      REDIRECT('/?get=password&id='.$user['ID'].'&hash='.$user['EMAIL_HASH'].'');
    
    }
    
    $hash = USER_HASH($user['ID']);
    
    DB::GET_SET("UPDATE `USERS` SET `HASH` = '".$hash."', `EMAIL_HASH` = '".NULL."', `PASSWORD` = '".SHIF($password1)."' WHERE `ID` = '".$user['ID']."' LIMIT 1");
    
    SETCOOKIE('DOUBLE', 1, TIME() + 60 * 60 * 24 * 365);
    SETCOOKIE('USER_ID', $user['ID'], TIME() + 60 * 60 * 24 * 365);
    SETCOOKIE('PASSWORD', ENCRYPT($password1, $user['ID']), TIME() + 60 * 60 * 24 * 365);
    
    SUCCESS('Доступ успешно восстановлен');    
    REDIRECT('/id'.$user['ID'].'');
    
  }
  
  ECHO "<div class='list-body'>";
  
  ECHO "<div class='list-menu'>";
  
  ECHO "<form method='post'>";
  
  HTML::INPUT('login', 'Логин', 'Ваш логин:', NULL, $user['LOGIN'], 'form-control-100', 'text', 'disabled=disabled');
  
  HTML::INPUT('password1', NULL, 'Придумайте пароль:', NULL, NULL, 'form-control-100', 'password');
  
  HTML::INPUT('password2', NULL, 'Повторите пароль:', NULL, NULL, 'form-control-100', 'password');
  
  CAPTCHA('Введите числа с картинки', 'form-control-30');
  
  HTML::BUTTON('btn-login', 'ok', 'plus', 'ВОССТАНОВИТЬ');
  
  ECHO "</form>";
  
  ECHO "</div>";
  
  ECHO "</div>";
  
}ELSE{

//Отправка сообщения для восстановления доступа
  
  IF (POST('ok')){
    
    $err_data = 0;
    
    $login = ADSL(POST('login'));
    $email = ADSL(POST('email'));
    $code = MD5(MT_RAND(0000000,9999999));
    
    IF (DB::GET_COLUMN("SELECT COUNT(*) FROM `USERS` WHERE `LOGIN` = '".$login."' LIMIT 1") == 0){
      
      ERROR('Такого пользователя не существует', 'session');
      $err_data = 1;
    
    }
    
    IF (DB::GET_COLUMN("SELECT COUNT(*) FROM `USERS` WHERE `EMAIL` = '".$email."' AND `LOGIN` = '".$login."' LIMIT 1") == 0){
      
      ERROR('Не удалось найти пользователя с таким E-mail', 'session');
      $err_data = 1;
    
    }
    
    IF (!PREG_MATCH("/^(?:[a-z0-9]+(?:[-_.]?[a-z0-9]+)?@[a-z0-9_.-]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i", $email)) {
      
      ERROR('Проверьте правильность адреса', 'session');
      $err_data = 1;
    
    }
    
    IF (!POST('captcha') OR !POST('captcha_key')) {
      
      ERROR('Вы не ввели числа с картинки', 'session');
      $err_data = 1;
    
    }
    
    IF (MD5((int)POST('captcha') + $captcha_random_seed) != POST('captcha_key')) {
      
      ERROR('Числа с картинки введены неверно', 'session');
      $err_data = 1;
    
    }
    
    IF ($err_data == 1){
      
      REDIRECT('/?get=password');
    
    }
    
    $user = DB::GET_STRING("SELECT `ID` FROM `USERS` WHERE `LOGIN` = '".$login."' LIMIT 1");
    
    EMAIL($email, 'Восстановление доступа к аккаунту на '.HTTP_HOST.'', 'Здравствуйте. Вы получили это письмо для восстановления доступа к аккаунту на нашем сайте <b>'.HTTP_HOST.'</b>.<br /><br /> Ваш логин: <b>'.$login.'</b><br /><br />Перейдите по ссылке для установки нового пароля:<br /><a href="http://'.HTTP_HOST.'/?get=password&id='.$user['ID'].'&hash='.$code.'">http://'.HTTP_HOST.'/?get=password&id='.$user['ID'].'&hash='.$code.'</a>', TEXT_ABSOLUTE(CONFIG('EMAIL')));
    
    DB::GET_SET("UPDATE `USERS` SET `EMAIL_HASH` = '".$code."' WHERE `ID` = '".$user['ID']."' LIMIT 1");
    
    SUCCESS('Письмо успешно отправлено на указанный адрес. Перейдите к письму и следуйте дальнейшим инструкциям', 'session');
    REDIRECT('/?get=password');  
  
  }
  
  ECHO "<div class='list-body'>";
  
  ECHO "<div class='list-menu'>";
  
  ECHO "<form method='post'>";
  
  HTML::INPUT('login', 'Логин', 'Ваш логин:');
  HTML::INPUT('email', 'E-mail', 'Ваш E-mail, привязанный к логину:', NULL, NULL);
  
  CAPTCHA('Введите числа с картинки', 'form-control-30');
  
  HTML::BUTTON('btn-login', 'ok', 'envelope', 'ОТПРАВИТЬ ПИСЬМО');
  
  ECHO "</form>";
  
  ECHO "</div>";
  
  ECHO "</div>";
  
}

ECHO "<div class='list-body'>";

ECHO "<div class='list-menu'><a href='/?get=login'>";
ECHO ICONS('arrow-left', 15, 'fa-fw');
ECHO " ".LG('Авторизация')."";
ECHO "</a></div>";

ECHO "<div class='list-menu'><a href='/?get=registration'>";
ECHO ICONS('arrow-left', 15, 'fa-fw');
ECHO " ".LG('Регистрация')."";
ECHO "</a></div>";

ECHO "</div>";

//Навигация
ECHO "<div class='navigation'>";
ECHO "<a href='?'>".ICONS('home', 25, 'fa-fw')."</a>";
ECHO "".ICONS('angle-right', 20, 'fa-fw')."";
ECHO "".LG('Восстановление пароля')."";
ECHO "</div>";

?>