Salta ai contenuti
Manuale LogoManuale Logo

Form, GET e POST

Un form HTML permette di inserire dati e inviarli al server. PHP può leggerli e usarli.

<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.

GET inserisce i dati nell’indirizzo della pagina. Va bene per ricerche e filtri.

Esempio:

cerca.php?q=php

Non usarlo per password o dati sensibili.

<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.

Non fidarti dei dati ricevuti da un form. Controlla che siano presenti, abbiano il formato corretto e non siano troppo lunghi.

<?php
if ($nome === "") {
echo "Il nome è obbligatorio";
}

La validazione rende il programma più sicuro e comunica subito gli errori a chi lo usa.

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.

Una pagina può essere aperta normalmente oppure ricevere un invio dal form. Puoi distinguere i due casi con $_SERVER["REQUEST_METHOD"].

<?php
if ($_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.

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.