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:
| GET | POST |
|---|---|
| Mostra i dati nell’URL | Nasconde i dati nell’invio |
| Ideale per ricerche | Ideale per dati sensibili |
| Ha limiti di lunghezza | Non ha limiti pratici |
| Facile da condividere | Preferibile 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
- Crea un form di login con
usernameepassword. - Aggiungi controlli sulla lunghezza minima dei campi.
- Crea un form con checkbox multiple usando
name[]. - 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)