Uno dei modi migliori per imparare PHP è… scrivere codice vero, anche se semplice.
E cosa c’è di più concreto che lavorare con i form HTML? Sono il cuore dell’interazione tra utenti e server: login, registrazioni, contatti, commenti, caricamento file… tutto passa da un form.
In questo articolo troviamo 6 form semplici, senza array o strutture complesse, perfetti per esercitarvi con:
- lettura dei dati tramite
$_POST - validazione dei campi
- sanificazione per la sicurezza
- logica di base in PHP
Ogni esempio include spiegazioni dettagliate su come funziona e perché ogni elemento è importante.
1) Calcolatrice Semplice
Un form che permette di sommare, sottrarre, moltiplicare o dividere due numeri.
form_calcolatrice.html
<form action="calcolatrice.php" method="post">
<label>Numero 1:</label>
<input type="number" name="n1" required>
<label>Numero 2:</label>
<input type="number" name="n2" required>
<label>Operazione:</label>
<select name="operazione" required>
<option value="add">+</option>
<option value="sub">-</option>
<option value="mul">*</option>
<option value="div">/</option>
</select>
<button type="submit">Calcola</button>
</form>
Spiegazione
name: indispensabile, perché è la chiave con cui PHP riceverà il valore.required: impedisce l’invio del form se il campo è vuoto.select: permette all’utente di scegliere l’operazione.
In PHP possiamo leggere i dati così:
$n1 = $_POST['n1'];
$n2 = $_POST['n2'];
$operazione = $_POST['operazione'];
Calcolare il risultato
Possiamo usare switch per capire quale operazione eseguire:
$result = 0;
switch($operazione){
case "add":
$result = $n1 + $n2;
break;
case "sub":
$result = $n1 - $n2;
break;
case "mul":
$result = $n1 * $n2;
break;
case "div":
if($n2 != 0){
$result = $n1 / $n2;
} else {
echo "Errore: divisione per zero!";
exit;
}
break;
default:
echo "Operazione non valida!";
exit;
}
Stampare il risultato
Possiamo mostrare il risultato in modo chiaro:
echo "Risultato: $n1 ";
switch($operazione){
case "add": echo "+"; break;
case "sub": echo "-"; break;
case "mul": echo "*"; break;
case "div": echo "/"; break;
}
echo " $n2 = $result";
Esempio
Se l’utente inserisce:
n1 = 10n2 = 5- operazione =
sub
Il messaggio sarà:
Risultato: 10 - 5 = 5
2) Form di Login
Un classico esempio per gestire username e password.
form_login.html
<form action="login.php" method="post">
<label>Username:</label>
<input type="text" name="username" required>
<label>Password:</label>
<input type="password" name="password" required>
<button type="submit">Accedi</button>
</form>
password nasconde il testo mentre l’utente digita.
In PHP possiamo controllare se i campi sono vuoti e possiamo sanificare per motivi di sicurezza:
Script PHP: login.php
<?php
// Controllo se il form è stato inviato
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 1️⃣ Leggo i dati dal form
$username = isset($_POST['username']) ? $_POST['username'] : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';
// 2️⃣ Validazione: campi obbligatori
if (empty($username) || empty($password)) {
echo "Errore: tutti i campi sono obbligatori!";
exit;
}
// 3️⃣ Sanificazione per sicurezza (XSS)
$username_safe = htmlspecialchars($username, ENT_QUOTES, 'UTF-8');
$password_safe = htmlspecialchars($password, ENT_QUOTES, 'UTF-8');
// 4️⃣ Stampo i dati inseriti
echo "<h2>Dati ricevuti:</h2>";
echo "Username: <strong>$username_safe</strong><br>";
echo "Password: <strong>$password_safe</strong><br>";
// 5️⃣ Logica di esempio: controllo login fittizio
$utente_valido = "admin";
$password_valida = "12345";
if ($username === $utente_valido && $password === $password_valida) {
echo "<p style='color:green;'>Login riuscito! Benvenuto, $username_safe.</p>";
} else {
echo "<p style='color:red;'>Login fallito. Username o password errati.</p>";
}
} else {
echo "Compila il form per accedere.";
}
?>
Spiegazione passo passo
$_SERVER['REQUEST_METHOD']: verifica che il form sia stato inviato tramite POST.isset(): controlla che le variabili esistano prima di usarle.- Validazione: impedisce campi vuoti.
- Sanificazione:
htmlspecialchars()trasforma eventuali caratteri HTML speciali in testo sicuro → evita XSS. - Stampa dei dati: mostra all’utente quello che ha inserito in modo leggibile.
- Logica fittizia: esempio semplice per mostrare come confrontare i dati con valori predefiniti.
3) Quiz a Risposta Singola (Radio Button)
Perfetto per capire la logica condizionale.
form_quiz.html
<form action="quiz.php" method="post">
<p>Qual è la capitale della Francia?</p>
<label><input type="radio" name="capitale" value="Roma" required> Roma</label>
<label><input type="radio" name="capitale" value="Madrid"> Madrid</label>
<label><input type="radio" name="capitale" value="Parigi"> Parigi</label>
<button type="submit">Verifica</button>
</form>
Spiegazione del form
name="capitale"
Tutti i radio button devono avere lo stessonameper raggrupparli: PHP riceverà un solo valore, quello selezionato dall’utente.value="..."
Ogni radio button ha un valore diverso, che sarà inviato al server.required
L’utente deve selezionare almeno un’opzione prima di inviare.
Script PHP: quiz.php
<?php
// Verifico che il form sia stato inviato con POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 1️⃣ Controllo che sia stato selezionato un valore
if (!isset($_POST['capitale'])) {
echo "Errore: devi scegliere una risposta!";
exit;
}
// 2️⃣ Leggo e sanifico il dato
$scelta = htmlspecialchars($_POST['capitale'], ENT_QUOTES, 'UTF-8');
// 3️⃣ Stampo la scelta dell'utente
echo "<p>Hai selezionato: <strong>$scelta</strong></p>";
// 4️⃣ Controllo se la risposta è corretta
$risposta_corretta = "Parigi";
if ($scelta === $risposta_corretta) {
echo "<p style='color:green;'>Risposta corretta! 🎉</p>";
} else {
echo "<p style='color:red;'>Risposta sbagliata. 😞 La capitale corretta è $risposta_corretta.</p>";
}
} else {
echo "Compila il form per rispondere al quiz.";
}
?>
Spiegazione passo passo
- Controllo POST
Con$_SERVER['REQUEST_METHOD'] === 'POST'ci assicuriamo che i dati arrivino dal form e non dall’URL. - Verifica campo obbligatorio
Anche se abbiamorequirednell’HTML, è buona pratica controllare sempre lato server. - Sanificazione
htmlspecialchars()trasforma eventuali caratteri speciali in testo normale, prevenendo XSS. - Stampa della scelta dell’utente
Mostrare cosa l’utente ha selezionato aiuta nel feedback. - Logica di verifica
Confrontiamo il valore selezionato con la risposta corretta e stampiamo un messaggio dinamico.
Esercizi da fare per consolidare quanto appreso:
Esercizio 1: Feedback o Commento
Consegna
Crea un modulo PHP che permetta agli utenti di inviare un commento.
Requisiti:
- Il form deve avere due campi obbligatori:
- Nome (input di testo)
- Commento (textarea)
- Quando l’utente invia il form:
- Controlla che tutti i campi siano compilati.
- Sanifica i dati per evitare problemi di sicurezza.
- Stampa un messaggio che mostri:
[NOME] dice: [COMMENTO]
Obiettivi didattici:
- Leggere i dati inviati con
$_POST. - Gestire campi obbligatori.
- Sanificare i dati prima di stamparli.
- Fornire feedback chiaro all’utente.
Bonus opzionale:
- Aggiungere un colore diverso per il messaggio se il campo è vuoto o compilato correttamente.
Esercizio 2: Registrazione Utente (Semplice)
Consegna
Crea un modulo di registrazione per un sito web.
Requisiti:
- Il form deve avere tre campi obbligatori:
- Nome (input di testo)
- Email (input email)
- Password (input password)
- Quando l’utente invia il form:
- Verifica che nessun campo sia vuoto.
- Controlla che l’email inserita sia valida.
- Sanifica i dati prima di stamparli.
- Mostra un messaggio con i dati inseriti, ad esempio:
Registrazione completata!
Nome: [NOME]
Email: [EMAIL]
Password: [PASSWORD]
Obiettivi didattici:
- Comprendere come leggere e validare dati con
$_POST. - Applicare controlli di validità sui campi (es. email).
- Imparare a sanificare i dati per la sicurezza.
- Fornire un feedback chiaro all’utente.
Bonus opzionale:
- Controllare la lunghezza minima della password (es. almeno 5 caratteri).
- Aggiungere messaggi di errore personalizzati per ciascun campo.