register
This commit is contained in:
parent
a9bbb84e7b
commit
81d181eeb0
|
|
@ -0,0 +1,109 @@
|
|||
<?php
|
||||
require_once "../db/connect.php";
|
||||
session_start();
|
||||
|
||||
// Se POST: esegue la registrazione e risponde JSON
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$nome = trim($_POST['nome'] ?? '');
|
||||
$cognome = trim($_POST['cognome'] ?? '');
|
||||
$data_nascita = trim($_POST['data_nascita'] ?? '');
|
||||
$luogo_nascita = trim($_POST['luogo_nascita'] ?? '');
|
||||
$cod_fiscale = strtoupper(trim($_POST['cod_fiscale'] ?? ''));
|
||||
$telefono = preg_replace('/\D+/', '', $_POST['telefono'] ?? '');
|
||||
|
||||
$username = trim($_POST['username'] ?? '');
|
||||
$password = trim($_POST['password'] ?? '');
|
||||
|
||||
// Validazioni base
|
||||
$errors = [];
|
||||
if ($nome === '' || $cognome === '' || $luogo_nascita === '') {
|
||||
$errors[] = 'Nome, Cognome e Luogo di nascita sono obbligatori';
|
||||
}
|
||||
if ($data_nascita === '' || !preg_match('/^\d{4}-\d{2}-\d{2}$/', $data_nascita)) {
|
||||
$errors[] = 'Data di nascita non valida (YYYY-MM-DD)';
|
||||
}
|
||||
if ($cod_fiscale === '' || strlen($cod_fiscale) !== 16) {
|
||||
$errors[] = 'Codice Fiscale deve avere 16 caratteri';
|
||||
}
|
||||
if ($telefono === '' || !preg_match('/^\d{6,10}$/', $telefono)) {
|
||||
$errors[] = 'Telefono deve contenere 6-10 cifre';
|
||||
}
|
||||
if ($username === '' || strlen($username) < 3) {
|
||||
$errors[] = 'Username deve avere almeno 3 caratteri';
|
||||
}
|
||||
// password policy
|
||||
if ($password === '' || preg_match('/\s/', $password)) {
|
||||
$errors[] = 'La password non deve contenere spazi';
|
||||
}
|
||||
if (strlen($password) < 8) {
|
||||
$errors[] = 'La password deve avere almeno 8 caratteri';
|
||||
}
|
||||
if (!preg_match('/[a-z]/', $password)) {
|
||||
$errors[] = 'La password deve contenere almeno una lettera minuscola';
|
||||
}
|
||||
if (!preg_match('/[A-Z]/', $password)) {
|
||||
$errors[] = 'La password deve contenere almeno una lettera maiuscola';
|
||||
}
|
||||
if (!preg_match('/[^a-zA-Z0-9]/', $password)) {
|
||||
$errors[] = 'La password deve contenere almeno un carattere speciale';
|
||||
}
|
||||
|
||||
// Escaping semplice per evitare errori sintattici
|
||||
$nome_e = mysqli_real_escape_string($conn, $nome);
|
||||
$cognome_e = mysqli_real_escape_string($conn, $cognome);
|
||||
$data_nascita_e = mysqli_real_escape_string($conn, $data_nascita);
|
||||
$luogo_nascita_e = mysqli_real_escape_string($conn, $luogo_nascita);
|
||||
$cod_fiscale_e = mysqli_real_escape_string($conn, $cod_fiscale);
|
||||
$telefono_e = mysqli_real_escape_string($conn, $telefono);
|
||||
$username_e = mysqli_real_escape_string($conn, $username);
|
||||
$password_e = mysqli_real_escape_string($conn, $password);
|
||||
|
||||
// Verifica username univoco
|
||||
$check = mysqli_query($conn, "SELECT user_id FROM `user` WHERE descrizione = '$username_e' LIMIT 1");
|
||||
if ($check && mysqli_num_rows($check) > 0) {
|
||||
$errors[] = 'Username già esistente';
|
||||
}
|
||||
|
||||
if (!empty($errors)) {
|
||||
echo json_encode(['status' => 'error', 'errors' => $errors]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Inserimenti semplici (senza transazioni per semplicità)
|
||||
$oggi = date('Y-m-d');
|
||||
$sql_person = "INSERT INTO `person` (nome, cognome, data_nascita, luogo_nascita, cod_fiscale, telefono) VALUES ('$nome_e', '$cognome_e', '$data_nascita_e', '$luogo_nascita_e', '$cod_fiscale_e', '$telefono_e')";
|
||||
if (!mysqli_query($conn, $sql_person)) {
|
||||
echo json_encode(['status' => 'error', 'errors' => ['Errore inserimento persona']]);
|
||||
exit;
|
||||
}
|
||||
$person_id = mysqli_insert_id($conn);
|
||||
|
||||
$sql_user = "INSERT INTO `user` (descrizione, data, person_id, password) VALUES ('$username_e', '$oggi', $person_id, '$password_e')";
|
||||
if (!mysqli_query($conn, $sql_user)) {
|
||||
echo json_encode(['status' => 'error', 'errors' => ['Errore inserimento utente']]);
|
||||
exit;
|
||||
}
|
||||
$user_id = mysqli_insert_id($conn);
|
||||
|
||||
$sql_perm = "INSERT INTO `permission` (user_id, role, data) VALUES ($user_id, 3, '$oggi')";
|
||||
if (!mysqli_query($conn, $sql_perm)) {
|
||||
echo json_encode(['status' => 'error', 'errors' => ['Errore assegnazione ruolo']]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Login automatico e risposta
|
||||
$_SESSION['user_id'] = (int)$user_id;
|
||||
$_SESSION['username'] = $username;
|
||||
$_SESSION['role_id'] = 3;
|
||||
$_SESSION['role_name'] = 'utente';
|
||||
|
||||
echo json_encode(['status' => 'ok']);
|
||||
exit;
|
||||
} else {
|
||||
header('Content-Type: application/json');
|
||||
http_response_code(405);
|
||||
echo json_encode(['status' => 'error', 'errors' => ['Metodo non consentito']]);
|
||||
exit;
|
||||
}
|
||||
Loading…
Reference in New Issue