Ottieni il referer URL originale con PHP?


110

Sto usando $_SERVER['HTTP_REFERER'];per ottenere l'URL del referer. Funziona come previsto finché l'utente non fa clic su un'altra pagina e il referer passa all'ultima pagina.

Come memorizzo l'URL di riferimento originale?

Risposte:


137

Memorizzalo in un cookie (se è accettabile per la tua situazione) o in una variabile di sessione.

session_start();

if ( !isset( $_SESSION["origURL"] ) )
    $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];

13
Si prega di notare il consiglio di @pcp nella risposta qui sotto!
d -_- b

6
Tieni presente che dovresti anche controllare se http_refereresiste, poiché spesso non lo è, il che potrebbe causare un errore "Indice non definito".
Justin

17

Come suggerito da Johnathan, potresti salvarlo in un cookie o in una sessione.

Il modo più semplice sarebbe usare una variabile Session.

session_start();
if(!isset($_SESSION['org_referer']))
{
    $_SESSION['org_referer'] = $_SERVER['HTTP_REFERER'];
}

Inseriscilo nella parte superiore della pagina e sarai sempre in grado di accedere al primo referer da cui è stato diretto il visitatore del sito.


4

Memorizzalo in un cookie che dura solo per la sessione di navigazione corrente


4

L'utilizzo dei cookie come repository della pagina di riferimento è molto meglio nella maggior parte dei casi, poiché i cookie manterranno il referrer fino alla chiusura del browser (e lo manterranno anche se la scheda del browser è chiusa), quindi nel caso in cui l'utente abbia lasciato la pagina aperta, diciamo prima dei fine settimana e dopo un paio di giorni, la tua sessione sarà probabilmente scaduta, ma i cookie saranno ancora lì.

Metti quel codice all'inizio di una pagina (prima di qualsiasi output html, poiché i cookie verranno impostati correttamente solo prima di qualsiasi echo / print):

if(!isset($_COOKIE['origin_ref']))
{
    setcookie('origin_ref', $_SERVER['HTTP_REFERER']);
}

Quindi puoi accedervi in ​​seguito:

$var = $_COOKIE['origin_ref'];

E oltre a quanto suggerito da @pcp sull'escape di $ _SERVER ['HTTP_REFERER'], quando si utilizza il cookie, potresti anche voler eseguire l'escape di $ _COOKIE ['origin_ref'] su ogni richiesta.


-4

prova questo

(isset ($_SERVER['HTTP_CLIENT_IP']) ? 
    $_SERVER['HTTP_CLIENT_IP'] : 
    (isset ($_SERVER['HTTP_X_FORWARDED_FOR']) ? 
        $_SERVER['HTTP_X_FORWARDED_FOR'] : 
        $_SERVER['REMOTE_ADDR']
    )
)

Si tratta di ottenere, IP ADDRESSma il post riguarda REFERERla pagina web che ha portato a quella in questione.
Sanxofon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.