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
| Superglobale | Origine | Visibilità |
|---|---|---|
$_GET | Dati nell'URL | Visibili |
$_POST | Dati nel corpo della richiesta | Invisibili |
$_COOKIE | Dati salvati nel browser | Visibili lato client |
$_REQUEST | Unione di GET + POST + COOKIE | Dipende 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.
- Editor PHP
- Server locale (XAMPP o MAMP)
- Browser per testare i risultati
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.