In questa lezione imparerai come collegare i form HTML con il formato JSON in PHP. Creeremo una pagina che riceve i dati inviati da un form e restituisce una risposta in formato JSON, simulando il comportamento di una piccola API.
Dal form HTML al PHP
Un form HTML invia i dati al server usando i metodi GET o POST. Nel nostro caso, il file PHP riceverà i dati tramite $_POST, li elaborerà e risponderà in formato JSON.
<form method="post" action="registrazione.php">
Nome: <input type="text" name="nome"><br>
Email: <input type="email" name="email"><br>
<input type="submit" value="Invia">
</form>
Il file registrazione.php riceverà i dati e li convertirà in una struttura JSON da restituire come risposta.
Creare una risposta JSON in PHP
Nel file PHP possiamo impostare l’header HTTP per indicare che la risposta sarà in formato JSON e poi usare json_encode().
<?php
$nome = $_POST["nome"] ?? "";
$email = $_POST["email"] ?? "";
if (empty($nome) || empty($email)) {
$risposta = [
"success" => false,
"messaggio" => "Compila tutti i campi!"
];
} else {
$risposta = [
"success" => true,
"messaggio" => "Registrazione completata",
"dati" => [
"nome" => $nome,
"email" => $email
]
];
}
header("Content-Type: application/json");
echo json_encode($risposta, JSON_PRETTY_PRINT);
?>
Se invii il form, la risposta del server sarà un testo JSON come:
{
"success": true,
"messaggio": "Registrazione completata",
"dati": {
"nome": "Luca",
"email": "luca@example.com"
}
}
Usare la risposta JSON nel browser
Se apri il form normalmente, il browser mostrerà il testo JSON. Ma nelle applicazioni moderne, questa risposta viene letta da JavaScript (tramite fetch() o AJAX) per aggiornare la pagina senza ricaricarla.
In questa lezione ci concentriamo sul lato PHP, ma nella prossima vedremo come collegare questo form a JavaScript.
Validazione e messaggi di errore
Anche con JSON è buona pratica validare i campi e restituire errori significativi. Ecco un esempio con più controlli:
<?php
$nome = trim($_POST["nome"] ?? "");
$email = trim($_POST["email"] ?? "");
$errori = [];
if (empty($nome)) {
$errori["nome"] = "Il nome è obbligatorio.";
}
if (empty($email)) {
$errori["email"] = "L'email è obbligatoria.";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errori["email"] = "Formato email non valido.";
}
if (!empty($errori)) {
$risposta = ["success" => false, "errori" => $errori];
} else {
$risposta = ["success" => true, "messaggio" => "Dati validi."];
}
header("Content-Type: application/json");
echo json_encode($risposta, JSON_PRETTY_PRINT);
?>
Ora che conosci la teoria, mettiamola in pratica con un laboratorio realistico!
LABORATORIO
Modulo di registrazione utente con risposta JSON
In questo laboratorio realizzerai un piccolo sistema di registrazione utenti. Il form invierà i dati a un file PHP che restituirà una risposta in formato JSON, contenente messaggi di successo o di errore.
- Editor PHP (VS Code, Notepad++)
- Server locale (XAMPP, MAMP o Laragon)
- Browser per inviare e visualizzare la risposta JSON
1 Obiettivo
Creare un form HTML che invia i dati a uno script PHP. Il server dovrà rispondere con un messaggio JSON che indichi se la registrazione è andata a buon fine.
2 Creazione del form HTML
Crea un file registrazione.html con il seguente contenuto:
<form method="post" action="registrazione.php">
Nome: <input type="text" name="nome"><br>
Email: <input type="email" name="email"><br>
Password: <input type="password" name="password"><br>
<input type="submit" value="Invia">
</form>
3 Elaborazione dei dati in PHP
Crea il file registrazione.php che riceve i dati, li valida e restituisce la risposta JSON:
<?php
$nome = trim($_POST["nome"] ?? "");
$email = trim($_POST["email"] ?? "");
$password = trim($_POST["password"] ?? "");
$errori = [];
if (empty($nome)) $errori["nome"] = "Il nome è obbligatorio.";
if (empty($email)) {
$errori["email"] = "L'email è obbligatoria.";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errori["email"] = "Formato email non valido.";
}
if (strlen($password) < 6) {
$errori["password"] = "La password deve contenere almeno 6 caratteri.";
}
if (!empty($errori)) {
$risposta = ["success" => false, "errori" => $errori];
} else {
$risposta = [
"success" => true,
"messaggio" => "Registrazione completata!",
"utente" => [
"nome" => $nome,
"email" => $email
]
];
}
header("Content-Type: application/json");
echo json_encode($risposta, JSON_PRETTY_PRINT);
?>
4 Test e risultati
- Apri il file registrazione.html nel browser.
- Compila il form con diversi valori (anche sbagliati).
- Osserva la risposta JSON generata da PHP.
- Prova a correggere gli errori e verifica la risposta positiva.
- Creazione di un form HTML collegato a uno script PHP.
- Uso pratico di json_encode() per creare risposte JSON.
- Validazione dei dati e gestione di errori in formato JSON.
- Simulazione di una piccola API REST di registrazione.
- Base per il collegamento con JavaScript e fetch() nella prossima lezione.