PHP

Metodo REQUEST

Spiegazione della variabile superglobale $_REQUEST in PHP con esempi pratici e laboratorio guidato

La variabile superglobale $_REQUEST in PHP è un array associativo che combina i dati provenienti da $_GET, $_POST e $_COOKIE. Serve per accedere facilmente ai valori inviati all'applicazione, senza preoccuparsi del metodo usato.


1️⃣ Cos'è $_REQUEST

Quando un form o un link invia dati, PHP li mette in diverse variabili superglobali in base al metodo usato (GET, POST o COOKIE). La variabile $_REQUEST raccoglie tutti questi valori in un unico contenitore.


$_REQUEST = $_GET + $_POST + $_COOKIE

È utile per script semplici o in situazioni in cui non importa sapere con quale metodo sono arrivati i dati.


2️⃣ Esempio pratico di uso base


<form action="processa_request.php" method="post">
  <label>Nome:</label>
  <input type="text" name="nome">

  <label>Età:</label>
  <input type="number" name="eta">

  <input type="submit" value="Invia">
</form>

<?php
    // processa_request.php
// Recupero dei dati indipendentemente dal metodo usato
$nome = $_REQUEST["nome"] ?? "";
$eta = $_REQUEST["eta"] ?? "";

echo "Ciao $nome, hai $eta anni.";
?>

3️⃣ Come funziona $_REQUEST

PHP controlla le configurazioni del file php.ini per stabilire l'ordine con cui vengono uniti i dati: l'impostazione è request_order o variables_order. Di default, l'ordine è GP → prima $_GET, poi $_POST.

Esempio: se una chiave ha lo stesso nome in entrambi (es. nome), PHP userà il valore dell'ultimo metodo in ordine.


4️⃣ Esempio con GET e POST insieme


<form action="processa_request.php?origine=form" method="post">
  <input type="text" name="nome" placeholder="Inserisci nome">
  <input type="submit" value="Invia">
</form>

L'URL finale diventerà qualcosa come:

processa_request.php?origine=form

e PHP riceverà:


<?php
$nome = $_REQUEST["nome"] ?? "";
$origine = $_REQUEST["origine"] ?? "";
echo "Nome: $nome <br> Origine: $origine";
?>

5️⃣ Sicurezza e buone pratiche

Sebbene $_REQUEST sia comodo, non è sempre consigliato perché non permette di distinguere chiaramente la fonte dei dati. Per motivi di sicurezza, in applicazioni reali è preferibile usare $_GET o $_POST a seconda del caso.

💡 Usa $_REQUEST solo quando serve una soluzione rapida o generica (es. form con metodo variabile, test, script didattici).


6️⃣ Pulizia dei dati


<?php
$nome = htmlspecialchars($_REQUEST["nome"] ?? "");
$eta = (int) ($_REQUEST["eta"] ?? 0);
echo "Ciao $nome, hai $eta anni.";
?>

7️⃣ Riepilogo

SuperglobaleOrigineVisibilità
$_GETDati nell'URLVisibili
$_POSTDati nel corpo della richiestaInvisibili
$_COOKIEDati salvati nel browserVisibili lato client
$_REQUESTUnione di GET + POST + COOKIEDipende dai metodi

8️⃣ Laboratorio: uso di $_REQUEST

LABORATORIO

Gestire i dati da GET e POST con $_REQUEST

In questo laboratorio creerai un form che invia i dati sia tramite GET che POST e vedrai come $_REQUEST li gestisce insieme.


1 Crea il file request_form.php


<form action="processa_request.php?origine=modulo" method="post">
  Nome: <input type="text" name="nome"><br>
  Età: <input type="number" name="eta"><br>
  <input type="submit" value="Invia">
</form>
    

2 Crea il file processa_request.php


<?php
// Ricezione dati indipendente dal metodo
$nome = htmlspecialchars($_REQUEST["nome"] ?? "");
$eta = (int) ($_REQUEST["eta"] ?? 0);
$origine = $_REQUEST["origine"] ?? "sconosciuta";

echo "Ciao $nome, hai $eta anni <br> (Origine: $origine)";
?>

3 Testa il risultato

  • Apri request_form.php nel browser.
  • Compila il form e invialo.
  • Osserva come PHP riceve i dati da POST e da GET contemporaneamente.

💡 Prova a cambiare il metodo del form in GET e guarda come $_REQUEST continua a funzionare senza modifiche nel codice PHP.