Form, GET e POST
Cosa fa un form
Sezione intitolata “Cosa fa un form”Un form HTML permette di inserire dati e inviarli al server. PHP può leggerli e usarli.
Un form con GET
Sezione intitolata “Un form con GET”<form action="cerca.php" method="get"> <input type="text" name="q"> <button type="submit">Cerca</button></form>action indica quale file riceve i dati. method indica come vengono inviati.
In cerca.php puoi leggere il campo così:
<?php$ricerca = $_GET["q"] ?? "";echo "Hai cercato: " . htmlspecialchars($ricerca, ENT_QUOTES, 'UTF-8');$_GET contiene i dati inviati con il metodo GET. ?? "" evita errori se il campo non esiste.
Quando usare GET
Sezione intitolata “Quando usare GET”GET inserisce i dati nell’indirizzo della pagina. Va bene per ricerche e filtri.
Esempio:
cerca.php?q=phpNon usarlo per password o dati sensibili.
Un form con POST
Sezione intitolata “Un form con POST”<form action="contatto.php" method="post"> <input type="text" name="nome"> <textarea name="messaggio"></textarea> <button type="submit">Invia</button></form>In contatto.php:
<?php$nome = $_POST["nome"] ?? "";$messaggio = $_POST["messaggio"] ?? "";
echo "Grazie, " . htmlspecialchars($nome, ENT_QUOTES, 'UTF-8');$_POST contiene i dati inviati con il metodo POST.
Validare sempre
Sezione intitolata “Validare sempre”Non fidarti dei dati ricevuti da un form. Controlla che siano presenti, abbiano il formato corretto e non siano troppo lunghi.
<?phpif ($nome === "") { echo "Il nome è obbligatorio";}La validazione rende il programma più sicuro e comunica subito gli errori a chi lo usa.
Mantenere il valore dopo l’invio
Sezione intitolata “Mantenere il valore dopo l’invio”Quando un form contiene errori, è utile mostrare di nuovo i valori inseriti.
<?php$nome = $_POST["nome"] ?? "";?>
<form method="post"> <input type="text" name="nome" value="<?= htmlspecialchars($nome, ENT_QUOTES, 'UTF-8') ?>"> <button type="submit">Invia</button></form>Quando il form viene inviato, $nome contiene il valore ricevuto. htmlspecialchars lo rende sicuro prima di inserirlo di nuovo nell’HTML.
Controllare il metodo della richiesta
Sezione intitolata “Controllare il metodo della richiesta”Una pagina può essere aperta normalmente oppure ricevere un invio dal form. Puoi distinguere i due casi con $_SERVER["REQUEST_METHOD"].
<?phpif ($_SERVER["REQUEST_METHOD"] === "POST") { $nome = $_POST["nome"] ?? "";
if ($nome === "") { echo "Il nome è obbligatorio"; }}In questo modo validi i dati solo quando il form è stato inviato.
Regola pratica
Sezione intitolata “Regola pratica”Usa GET quando il risultato può stare nell’indirizzo, come una ricerca. Usa POST quando stai inviando dati che cambiano qualcosa o che non vuoi mostrare nell’URL.