PHP

Json Php E Form

Inviare e ricevere dati JSON tramite form PHP. Creare risposte JSON strutturate e simulare comunicazioni client-server.

JSON | Json Php E Form

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.


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.