Form, GET e POST
Cosa fa un form
Sezione intitolata “Cosa fa un form”Un form HTML permette a una persona di inserire dati e inviarli al server. PHP puo leggere quei dati 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 cosi:
<?php$ricerca = $_GET["q"] ?? "";echo "Hai cercato: " . htmlspecialchars($ricerca, ENT_QUOTES, 'UTF-8');$_GET contiene i dati inviati con metodo GET. ?? "" evita errori se il campo non esiste.
Quando usare GET
Sezione intitolata “Quando usare GET”GET mette 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 metodo POST.
Validare sempre
Sezione intitolata “Validare sempre”Non fidarti mai dei dati ricevuti da un form. Controlla che ci siano, che abbiano il formato giusto e che non siano troppo lunghi.
<?phpif ($nome === "") { echo "Il nome e obbligatorio";}La validazione rende il programma piu sicuro e piu gentile con chi lo usa.
Mantenere il valore dopo l’invio
Sezione intitolata “Mantenere il valore dopo l’invio”Quando un form contiene errori, e gentile 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>Se il form viene inviato, $nome contiene il valore ricevuto. htmlspecialchars lo rende sicuro prima di rimetterlo nell’HTML.
Controllare il metodo della richiesta
Sezione intitolata “Controllare il metodo della richiesta”Una pagina puo essere aperta normalmente o 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 e obbligatorio"; }}In questo modo validi i dati solo quando il form e stato inviato.
Regola pratica
Sezione intitolata “Regola pratica”Usa GET quando il risultato puo stare nell’indirizzo, come una ricerca. Usa POST quando stai inviando dati che cambiano qualcosa o che non vuoi mostrare nell’URL.