Загрузка данных
<?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'; ?>