Загрузка данных


<?php
require_once 'config/database.php';

if(isset($_SESSION['user_id'])) {
    header('Location: sales.php');
    exit;
}

$errors = [];
$success = '';

$stmt = $pdo->query("SELECT * FROM positions ORDER BY name");
$positions = $stmt->fetchAll();

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $login = trim($_POST['login']);
    $password = $_POST['password'];
    $full_name = trim($_POST['full_name']);
    $email = trim($_POST['email']);
    $position_id = $_POST['position_id'];

    if(empty($login)) {
        $errors['login'] = 'Введите логин';
    } else {
        $stmt = $pdo->prepare("SELECT id FROM users WHERE login = ?");
        $stmt->execute([$login]);
        if($stmt->fetch()) {
            $errors['login'] = 'Логин уже занят';
        }
    }

    if(empty($password)) {
        $errors['password'] = 'Введите пароль';
    } elseif(strlen($password) < 6) {
        $errors['password'] = 'Пароль должен содержать минимум 6 символов';
    } elseif(!preg_match('/[A-Z]/', $password)) {
        $errors['password'] = 'Пароль должен содержать хотя бы одну заглавную букву';
    } elseif(!preg_match('/[!@#$%^&*(),.?":{}|<>]/', $password)) {
        $errors['password'] = 'Пароль должен содержать хотя бы один спецсимвол';
    }

    if(empty($full_name)) {
        $errors['full_name'] = 'Введите имя';
    } elseif(!preg_match('/^[а-яА-ЯёЁ\s]+$/u', $full_name)) {
        $errors['full_name'] = 'Имя должно содержать только кириллицу и пробелы';
    }

    if(empty($email)) {
        $errors['email'] = 'Введите email';
    } elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errors['email'] = 'Некорректный email';
    }

    if(empty($position_id)) {
        $errors['position_id'] = 'Выберите должность';
    }

    if(empty($errors)) {
        $hashed_password = password_hash($password, PASSWORD_DEFAULT);
        $stmt = $pdo->prepare("INSERT INTO users (login, password, full_name, email, position_id) VALUES (?, ?, ?, ?, ?)");
        $stmt->execute([$login, $hashed_password, $full_name, $email, $position_id]);
        $success = 'Регистрация успешна! Дождитесь активации аккаунта администратором.';
    }
}

include 'includes/header.php';
?>

<div class="form-container">
    <h2 class="text-center">Регистрация</h2>
    
    <?php if($success): ?>
        <div class="success"><?= $success ?></div>
    <?php endif; ?>

    <form method="POST">
        <div class="form-group">
            <label>Логин *</label>
            <input type="text" name="login" value="<?= $_POST['login'] ?? '' ?>">
            <?php if(isset($errors['login'])): ?>
                <div class="error"><?= $errors['login'] ?></div>
            <?php endif; ?>
        </div>

        <div class="form-group">
            <label>Пароль *</label>
            <input type="password" name="password">
            <?php if(isset($errors['password'])): ?>
                <div class="error"><?= $errors['password'] ?></div>
            <?php endif; ?>
        </div>

        <div class="form-group">
            <label>ФИО *</label>
            <input type="text" name="full_name" value="<?= $_POST['full_name'] ?? '' ?>">
            <?php if(isset($errors['full_name'])): ?>
                <div class="error"><?= $errors['full_name'] ?></div>
            <?php endif; ?>
        </div>

        <div class="form-group">
            <label>Email *</label>
            <input type="email" name="email" value="<?= $_POST['email'] ?? '' ?>">
            <?php if(isset($errors['email'])): ?>
                <div class="error"><?= $errors['email'] ?></div>
            <?php endif; ?>
        </div>

        <div class="form-group">
            <label>Должность *</label>
            <select name="position_id">
                <option value="">Выберите должность</option>
                <?php foreach($positions as $position): ?>
                    <option value="<?= $position['id'] ?>" <?= (isset($_POST['position_id']) && $_POST['position_id'] == $position['id']) ? 'selected' : '' ?>>
                        <?= htmlspecialchars($position['name']) ?>
                    </option>
                <?php endforeach; ?>
            </select>
            <?php if(isset($errors['position_id'])): ?>
                <div class="error"><?= $errors['position_id'] ?></div>
            <?php endif; ?>
        </div>

        <button type="submit" class="btn">Зарегистрироваться</button>
    </form>

    <div class="text-center mt-20">
        <a href="login.php">Уже есть аккаунт? Войти</a>
    </div>
</div>

<?php include 'includes/footer.php'; ?>