Вход Регистрация
Файл: upload/pages/auth/register.php
Строк: 145
<?php
require_once ($_SERVER['DOCUMENT_ROOT'] . '/core/core.php');

if (isset(
$user['id'])) {
    
showAlert('Ошибка''fail''Вы уже авторизованы');
    
RedirectToPage('/');
    exit();
}

ob_start();
run_action('render_captcha');
$captcha ob_get_clean();
ob_start();
run_action('render_oauth_buttons');
$oauth ob_get_clean();

$page_html $view->render('pages/auth/register.html', [
    
'csrf' => $_SESSION['csrf_token'],
    
'captcha' => $captcha,
    
'oauth' => $oauth,
    
'home' => homeLink(),
    
'templ_home' => TemplateLink($theme)
]);

require_once (
$_SERVER['DOCUMENT_ROOT'] . '/layout.php');

if(isset(
$_POST['reg'])) {
    
check_csrf();
    
$login chars($_POST['login']);
    
$email chars($_POST['email']);
    
$pass chars($_POST['pass']);
    
$fingerprint $_POST['fingerprint'];
    
$r_pass chars($_POST['r_pass']);
    
$iss_login dbquery("SELECT COUNT(`id`) FROM `users` WHERE `login` = ?", [$login]);
    
$iss_email dbquery("SELECT COUNT(`id`) FROM `users` WHERE `email` = ?", [$email]);
    
    if (!
run_filter('verify_captcha'true)) {
        
showAlert('Ошибка''fail''Капча не пройдена!');
        
ReloadPage();
        exit();
    }
    
    if (isset(
$login)) {
        if (isset(
$pass)){
            if ((
mb_strlen($pass) >= 5) && (mb_strlen($pass) <= 25)) {
                if (
$pass == $r_pass) {
                    if ((
mb_strlen($login) >= 3) && (mb_strlen($login) <= 13)) {
                        if (
DataResult($iss_login) < 1) {
                            if (
DataResult($iss_email) < 1) {
                                if (
preg_match('|^[a-z0-9-]+$|i'$login)) {
                                    
$salt genRandomString(15);
                                    
$passHash CryptorPass($pass$salt);
                                    
create_user($login$passHash$email$salt'0''local''local'$fingerprint$config);
                                        
                                    
$uid InGetLastInsertId();
                                    if (
$config['demo'] == true) {
                                        
$order OrderGenKey();
                                        
insertTransaction(5000$uid111$order);
                                    }
                                        
                                    if (
$uid == 1) {
                                        
dbquery("UPDATE `users` SET `level_us` = '2' WHERE `id` = '1'");
                                    }
                                    
$password $passHash;
                                    require_once (
$_SERVER['DOCUMENT_ROOT'] . '/core/elements/autolog.php');
                                    
session_start();
                                    
                                    
$_SESSION['newEl'] = 'value';
                                    if (!empty(
$_POST)) {
                                        
$_SESSION['login'] = chars($_POST['login']);
                                    }
                                    exit();
                                } else {
                                    
showAlert('Ошибка''fail''Кириллица запрещена в логине!');
                                    
ReloadPage();
                                    exit();
                                }
                            } else {
                                
showAlert('Ошибка''fail''Такой email уже существует!');
                                
ReloadPage();
                                exit();
                            }
                        } else {
                            
showAlert('Ошибка''fail''Такой логин уже существует!');
                            
ReloadPage();
                            exit();
                        }
                    } else {
                        
showAlert('Ошибка''fail''Введите логин от 3 до 13 символов!');
                        
ReloadPage();
                        exit();
                    }
                } else {
                    
showAlert('Ошибка''fail''Пароли не совпадают!');
                    
ReloadPage();
                    exit();
                }
            } else {
                
showAlert('Ошибка''fail''Введите пароль от 5-и до 25-и символов!');
                
ReloadPage();
                exit();
            }
        } else {
            
showAlert('Ошибка''fail''Вы не ввели пароль!');
            
ReloadPage();
            exit();
        }
    } else {
        
showAlert('Ошибка''fail''Вы не ввели логин!');
        
ReloadPage();
        exit();
    }

}
?>

<script>
  const checkbox = document.getElementById('agree');
  const fakeBtn = document.getElementById('fakeBtn');
  const realBtn = document.getElementById('realBtn');
  const form = document.getElementById('login');

  // переключаем кнопки
  checkbox.addEventListener('change', function() {
    if (this.checked) {
      fakeBtn.style.display = 'none';
      realBtn.style.display = 'inline-block';
    } else {
      fakeBtn.style.display = 'inline-block';
      realBtn.style.display = 'none';
    }
  });

  // защита: проверка при отправке
  form.addEventListener('submit', function(e) {
    if (!checkbox.checked) {
      e.preventDefault(); // блокируем отправку
      alert('Необходимо согласиться с условиями!');
    }
  });
</script>

<script>
async function getFingerprint() {
    // создаём уникальный ID в localStorage (самый важный элемент)
    if (!localStorage.getItem('fw_fp')) {
        localStorage.setItem('fw_fp', crypto.randomUUID());
    }

    const fp_raw = [
        navigator.userAgent,
        navigator.language,
        screen.width + 'x' + screen.height,
        Intl.DateTimeFormat().resolvedOptions().timeZone,
        navigator.platform,
        navigator.hardwareConcurrency || 'hc',
        navigator.deviceMemory || 'dm',
        localStorage.getItem('fw_fp')
    ].join('::');

    const encoder = new TextEncoder();
    const data = encoder.encode(fp_raw);
    const hashBuffer = await crypto.subtle.digest('SHA-256', data);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');

    return hashHex;
}

document.addEventListener('DOMContentLoaded', async () => {
    const fp = await getFingerprint();
    document.querySelector('input[name="fingerprint"]').value = fp;
});
</script>
Онлайн: 0
Реклама