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



Для реализации функционала регистрации проекта Axioma нам потребуется создать базу данных, PHP-скрипт для обработки данных и дополнительный файл для подключения к серверу.

1. Структура базы данных (SQL)
Создайте базу данных (например, axioma_db) и выполните следующий SQL-запрос для создания таблицы пользователей. Она учитывает поле user_type, которое присутствует в вашей форме.

SQL
CREATE TABLE `users` (
  `id` INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `user_type` ENUM('private', 'company') NOT NULL,
  `display_name` VARCHAR(255) NOT NULL,
  `phone` VARCHAR(20) NOT NULL,
  `email` VARCHAR(255) NOT NULL UNIQUE,
  `password` VARCHAR(255) NOT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2. Подключение к базе данных (vendor/db.php)
Создайте папку vendor и поместите туда файл для централизованного подключения.

PHP
<?php
$host = 'localhost';
$user = 'root';
$pass = ''; // Ваш пароль БД
$db   = 'axioma_db';

$connect = mysqli_connect($host, $user, $pass, $db);

if (!$connect) {
    die('Ошибка подключения к БД: ' . mysqli_connect_error());
}
?>
3. Обработка регистрации (vendor/signup.php)
Этот скрипт принимает данные из вашей HTML-формы, проверяет совпадение паролей и сохраняет пользователя.

PHP
<?php
session_start();
require_once 'db.php';

// Получаем данные из POST-запроса
$user_type = $_POST['user_type'];
$display_name = $_POST['display_name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$password = $_POST['password'];
$password_confirm = $_POST['password_confirm'];

// Простая проверка на совпадение паролей
if ($password !== $password_confirm) {
    die('Пароли не совпадают');
}

// Хешируем пароль для безопасности
$hashed_password = password_hash($password, PASSWORD_DEFAULT);

// Проверяем, не занят ли email
$check_email = mysqli_query($connect, "SELECT * FROM `users` WHERE `email` = '$email'");
if (mysqli_num_rows($check_email) > 0) {
    die('Пользователь с такой почтой уже существует');
}

// Запрос на добавление
$query = "INSERT INTO `users` (`user_type`, `display_name`, `phone`, `email`, `password`) 
          VALUES ('$user_type', '$display_name', '$phone', '$email', '$hashed_password')";

if (mysqli_query($connect, $query)) {
    // При успешной регистрации перекидываем на profil.html
    header('Location: ../profil.html');
    exit();
} else {
    echo "Ошибка при регистрации: " . mysqli_error($connect);
}
?>
4. Необходимые правки в JavaScript
Чтобы ваш скрытый инпут user_type менял значение при клике на кнопки "Частное лицо" или "Компания", добавьте небольшую логику в один из ваших JS-файлов или в подвал register_copy.html:

JavaScript
const btnPrivate = document.getElementById('btn-private');
const btnCompany = document.getElementById('btn-company');
const typeInput = document.getElementById('user-type');
const labelName = document.getElementById('label-name');

btnPrivate.addEventListener('click', () => {
    btnPrivate.classList.add('active');
    btnCompany.classList.remove('active');
    typeInput.value = 'private';
    labelName.innerText = 'ФИО';
});

btnCompany.addEventListener('click', () => {
    btnCompany.classList.add('active');
    btnPrivate.classList.remove('active');
    typeInput.value = 'company';
    labelName.innerText = 'Название компании';
});
Основные моменты:
Безопасность: Пароли сохраняются в зашифрованном виде (password_hash).

Перенаправление: После успешного выполнения INSERT, функция header('Location: ...') отправит пользователя на нужную страницу.

Пути: Убедитесь, что папка vendor создана в корне проекта, так как в HTML форме указан путь vendor/signup.php.