La variabile $_SERVER[‘HTTP_REFERER’] in PHP è una variabile superglobale che contiene l’URL della pagina di provenienza (referrer) da cui è stato effettuato il collegamento alla pagina corrente. In altre parole, è utilizzata per sapere da quale pagina web un utente è arrivato a una determinata pagina.
Come funziona?
Quando un browser invia una richiesta HTTP, include un’intestazione chiamata Referer (notare l’ortografia, che è tecnicamente un errore nel protocollo HTTP). Questa intestazione specifica l’URL della pagina precedente da cui proviene l’utente. PHP utilizza questa intestazione per popolare il valore di $_SERVER[‘HTTP_REFERER’].
Esempio di codice:
if (isset($_SERVER['HTTP_REFERER'])) { echo "Sei arrivato da: " . $_SERVER['HTTP_REFERER']; } else { echo "Non c'è un referrer."; }
Limitazioni e considerazioni importanti
Non sempre disponibile: Non tutti i browser o client inviano l’intestazione Referer, e alcuni utenti o proxy possono configurare il blocco di questa intestazione per motivi di privacy. Di conseguenza, $_SERVER[‘HTTP_REFERER’] potrebbe non essere sempre settata o contenere un valore vuoto.
Affidabilità: Poiché il valore della variabile è basato su un’intestazione HTTP, non è affidabile al 100%. Può essere manipolata facilmente da un utente malintenzionato. Per questo motivo, non deve mai essere utilizzata per scopi critici, come la gestione della sicurezza o il controllo degli accessi.
Protezione dei dati sensibili: Se utilizzata per registrare informazioni o per costruire URL, bisogna assicurarsi che non venga mai usata per mostrare o trasmettere dati sensibili.
Dipendenza dalla configurazione del server: In alcuni casi, i server o firewall possono bloccare o filtrare l’intestazione Referer, rendendo inutile il suo utilizzo.
Utilizzi comuni
Reindirizzamenti: Può essere usata per reindirizzare l’utente alla pagina da cui proviene, ad esempio dopo un’azione come l’accesso o la compilazione di un modulo.
if (isset($_SERVER['HTTP_REFERER'])) { header("Location: " . $_SERVER['HTTP_REFERER']); } else { header("Location: /default-page.php"); }
Statistiche: È comunemente utilizzata per tracciare la provenienza del traffico su un sito web.
Analisi di comportamento: Può essere usata per comprendere i percorsi di navigazione degli utenti su un sito.
Conclusione
$_SERVER[‘HTTP_REFERER’] è uno strumento utile, ma la sua limitata affidabilità e le potenziali vulnerabilità di sicurezza ne limitano l’applicazione. Se lo usi, tieni sempre a mente queste limitazioni e non fare affidamento su di esso per operazioni critiche.