Quando si inizia a programmare in PHP, una delle prime esigenze è quella di raccogliere dati dagli utenti: un nome, un’email, una password, una preferenza…
In altre parole, interagire con un form HTML.

In questo articolo vediamo come costruire un form, come PHP riceve i dati, e come farlo in modo sicuro.

Perché i Form Sono Così Importanti?

Ogni volta che compiliamo un modulo di login, inviamo una richiesta di contatto o facciamo una ricerca su un sito, stiamo usando un form HTML.
PHP entra in gioco come linguaggio lato server che riceve, elabora e utilizza quei dati.

Ecco perché capire come i due lavorano insieme è fondamentale.

Costruire un Form HTML: la base

Un form HTML è composto da campi di input e da un bottone per inviare i dati al server.
Ecco un esempio semplice:

<form action="processa.php" method="post">
    <label>Nome:</label>
    <input type="text" name="nome">

    <label>Email:</label>
    <input type="email" name="email">

    <button type="submit">Invia</button>
</form>

Le proprietà fondamentali sono:

action → indica il file PHP che dovrà ricevere i dati

method → indica con quale metodo HTTP saranno inviati i dati (GET o POST)

name: fondamentale per trasmettere i dati a PHP

Il Ruolo Cruciale dell’Attributo name

L’attributo name è ciò che permette a PHP di raccogliere correttamente i dati.

Quando invii un form, ogni campo viene inviato al server sotto forma di coppia chiave → valore.
La chiave è proprio il name.

Senza name, PHP non riceve alcun dato

Per esempio:

<input type="text" name="nome">

In PHP potrai recuperare il valore così:

$_POST['nome'];

Ma se il campo fosse:

<input type="text">

Quel campo non verrebbe inviato al server.
Il name è quindi indispensabile per far sì che PHP possa accedere al contenuto del form.

Serve a distinguere i campi tra loro

<input type="text" name="nome">
<input type="text" name="cognome">

Senza il name, PHP non saprebbe quale valore è il nome e quale il cognome.

È obbligatorio per radio, checkbox e select

<input type="radio" name="genere" value="uomo">
<input type="radio" name="genere" value="donna">

Permette di inviare array di valori

<input type="checkbox" name="interessi[]" value="sport">
<input type="checkbox" name="interessi[]" value="musica">

In sintesi:
👉 il name è la chiave di comunicazione tra HTML e PHP.

Come PHP Riceve i Dati

PHP utilizza delle variabili speciali chiamate superglobali:

  • $_POST — dati inviati con POST
  • $_GET — dati inviati con GET
  • $_REQUEST — include GET e POST, ma meno sicura

Esempio:

<?php
$nome = $_POST['nome'];
$email = $_POST['email'];

echo "Ciao $nome, ti abbiamo scritto a $email!";
?>

Meglio GET o POST?

Dipende dall’uso:

GETPOST
Mostra i dati nell’URLNasconde i dati nell’invio
Ideale per ricercheIdeale per dati sensibili
Ha limiti di lunghezzaNon ha limiti pratici
Facile da condividerePreferibile per form

Regola generale: per moduli seri → POST.

Validare i Dati: una Necessità

Prima di usare un valore inviato dall’utente, bisogna verificarne la correttezza:

if (empty($_POST['nome'])) {
    echo "Il nome è obbligatorio";
    exit;
}

if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    echo "Email non valida";
    exit;
}

Esempio Completo di form in HTML

📄 form.html

<form action="processa.php" method="post">
    <label>Nome:</label>
    <input type="text" name="nome">

    <label>Email:</label>
    <input type="email" name="email">

    <button type="submit">Invia</button>
</form>

⚙️ processa.php

<?php
if (empty($_POST['nome']) || empty($_POST['email'])) {
    die("Tutti i campi sono obbligatori.");
}

if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    die("Email non valida.");
}

$nome = htmlspecialchars($_POST['nome'], ENT_QUOTES, 'UTF-8');
$email = htmlspecialchars($_POST['email'], ENT_QUOTES, 'UTF-8');

echo "Ciao <strong>$nome</strong>! Abbiamo ricevuto il tuo indirizzo: <strong>$email</strong>.";
?>

Esercizi

  1. Crea un form di login con username e password.
  2. Aggiungi controlli sulla lunghezza minima dei campi.
  3. Crea un form con checkbox multiple usando name[].
  4. Realizza un modulo contatti completo con validazione.

Conclusione

I form sono il punto di partenza del dialogo tra utente e server.
Capire l'importanza del name e il funzionamento delle superglobali PHP è fondamentale per creare sistemi di input solidi, sicuri e professionali.

Nelle prossime lezioni vedremo come sanificare tutti i dati in modo da prevenire attacchi XSS (Cross-site Scripting)

🐍

Vuoi imparare Python da zero?

Scarica la guida gratuita Python in 10 giorni: 10 lezioni pratiche con esempi ed esercizi, direttamente nella tua email.

📥 Scarica gratis il PDF →