0Pricing
PHP Academy · Lezione

GET e POST: quando usare ciascuno

Comprendere la differenza tra GET e POST HTTP in PHP.

GET e POST: quando usare ciascuno è una lezione PHP Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento PHP Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso PHP Academy include 4 lezioni in totale.

Metodi HTTP in PHP per il web

Quando un browser invia un modulo HTML, usa il metodo HTTP GET oppure POST. PHP acquisisce i dati inviati tramite le superglobali:

  • $_GET — dati aggiunti all'URL
  • $_POST — dati nel corpo della richiesta

Metodo GET

GET aggiunge i dati del modulo all'URL come parametri della stringa di query:

<!-- HTML form -->
<form method="GET" action="search.php">
    <input name="query" type="text">
    <button type="submit">Search</button>
</form>

<!-- URL becomes: search.php?query=php+tutorial -->

<?php
$q = $_GET['query'] ?? '';
echo 'You searched for: ' . htmlspecialchars($q);

Metodo POST

POST invia i dati nel corpo della richiesta HTTP, che non è visibile nell'URL:

<!-- HTML form -->
<form method="POST" action="login.php">
    <input name="email" type="email">
    <input name="password" type="password">
    <button type="submit">Log In</button>
</form>

<?php
$email    = $_POST['email']    ?? '';
$password = $_POST['password'] ?? '';

Quando usare GET

Usi GET quando:

  • La richiesta è idempotente (non produce effetti collaterali)
  • I dati possono comparire nell'URL, ad esempio query di ricerca, filtri e paginazione
  • Desidera URL salvabili nei segnalibri o condivisibili
  • I dati non sono sensibili

Quando usare POST

Usi POST quando:

  • La richiesta modifica lo stato del server (creazione, aggiornamento, eliminazione)
  • I dati sono sensibili (password, informazioni personali)
  • Deve inviare grandi quantità di dati (file, testo lungo)
  • Non desidera che i dati vengano memorizzati nella cache dai browser o dai proxy

Limiti di lunghezza di GET

Le richieste GET hanno limiti sulla lunghezza dell'URL (in pratica, in genere circa 2000 caratteri). POST non ha un limite pratico, fatta eccezione per la configurazione del server:

<?php
// php.ini settings for POST limits:
// post_max_size = 8M   (total POST body size)
// upload_max_filesize = 2M

// Check current limits at runtime:
echo ini_get('post_max_size');        // 8M
echo ini_get('upload_max_filesize');  // 2M

Superglobale $_REQUEST

$_REQUEST unisce $_GET, $_POST e $_COOKIE. È comoda, ma rende meno chiara la provenienza dei dati:

<?php
// Works for both GET and POST but is ambiguous
$name = $_REQUEST['name'] ?? '';

// Better: be explicit about the expected method
$name = match($_SERVER['REQUEST_METHOD']) {
    'GET'  => $_GET['name']  ?? '',
    'POST' => $_POST['name'] ?? '',
    default => '',
};

Verifica del metodo della richiesta

Verifichi sempre il metodo della richiesta prima di elaborare i dati del modulo:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = trim($_POST['name'] ?? '');
    if (!empty($name)) {
        echo 'Hello, ' . htmlspecialchars($name);
    }
} else {
    // Show empty form
}

HTTPS e sicurezza dei dati

Anche con POST, i dati sono visibili in testo semplice se non si usa HTTPS. Regole di sicurezza fondamentali:

  • Usare sempre HTTPS in produzione
  • Non inviare mai le password tramite GET
  • POST su HTTP non è comunque sicuro: HTTPS cifra anche il corpo della richiesta

Reindirizzamento dopo POST (modello PRG)

Dopo un POST riuscito, reindirizzare a una richiesta GET per evitare invii duplicati durante l'aggiornamento della pagina:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Process the form...
    $id = saveToDatabase($_POST);
    
    // Post-Redirect-Get (PRG) pattern
    header('Location: /success.php?id=' . $id);
    exit;
}

Moduli multipart per il caricamento dei file

Per caricare file, il modulo deve usare enctype="multipart/form-data" con POST:

<!-- Required for file uploads -->
<form method="POST" action="upload.php"
      enctype="multipart/form-data">
    <input type="file" name="avatar">
    <button type="submit">Upload</button>
</form>

<?php
$file = $_FILES['avatar'];
echo $file['name'];  // original filename

Verifica rapida

Quale metodo HTTP dovrebbe usare per inviare un modulo di accesso con nome utente e password?

Riepilogo: GET e POST a confronto

Differenze principali:

  • GET — nell'URL, salvabile nei segnalibri, senza effetti collaterali, dimensione limitata
  • POST — nel corpo della richiesta, per dati sensibili, senza limite per l'URL
  • Usare sempre HTTPS per proteggere i dati sia GET sia POST
  • Verificare $_SERVER['REQUEST_METHOD'] prima dell'elaborazione
  • Applicare il modello PRG per evitare invii POST duplicati

Domande Frequenti

La lezione «GET e POST: quando usare ciascuno» è gratuita?

Sì — il testo completo di «GET e POST: quando usare ciascuno» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso PHP Academy, passa a CoddyKit PRO. Il corso PHP Academy include 4 lezioni in totale.

Cosa imparerò in «GET e POST: quando usare ciascuno»?

Comprendere la differenza tra GET e POST HTTP in PHP. Eserciti PHP Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare PHP Academy?

Non è richiesta alcuna esperienza precedente. PHP Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «GET e POST: quando usare ciascuno»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione PHP Academy?

Sì. Ogni lezione PHP Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. GET e POST: quando usare ciascuno
  2. Leggere i dati dei moduli con le superglobali
  3. Tecniche di validazione degli input
  4. Sanificazione degli input utente
← Torna a PHP Academy