Загрузка данных
Для реализации функционала регистрации проекта 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.