Original-URL-Referer mit PHP erhalten?

110

Ich benutze $_SERVER['HTTP_REFERER'];, um die Referer-URL zu bekommen. Es funktioniert wie erwartet, bis der Benutzer auf eine andere Seite klickt und der Referer zur letzten Seite wechselt.

Wie speichere ich die ursprüngliche verweisende URL?

Keith Donegan
quelle

Antworten:

137

Speichern Sie es entweder in einem Cookie (wenn es für Ihre Situation akzeptabel ist) oder in einer Sitzungsvariablen.

session_start();

if ( !isset( $_SESSION["origURL"] ) )
    $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];
Sampson
quelle
13
Bitte beachten Sie den Rat von @pcp in der Antwort unten!
d -_- b
6
Beachten Sie, dass Sie auch prüfen sollten, ob http_referervorhanden ist, da dies häufig nicht der Fall ist, da dies zu einem Fehler "Undefinierter Index" führen kann.
Justin
17

Wie Johnathan vorgeschlagen hat, möchten Sie es entweder in einem Cookie oder in einer Sitzung speichern.

Der einfachere Weg wäre die Verwendung einer Sitzungsvariablen.

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

Wenn Sie dies oben auf die Seite setzen, können Sie immer auf den ersten Referer zugreifen, von dem der Site-Besucher geleitet wurde.

Tyler Carter
quelle
4

Speichern Sie es in einem Cookie, das nur für die aktuelle Browsersitzung gültig ist

Matt
quelle
4

Die Verwendung von Cookies als Repository für Referenzseiten ist in den meisten Fällen viel besser, da Cookies den Verweis so lange beibehalten, bis der Browser geschlossen wird (und auch dann, wenn der Browser-Tab geschlossen wird). Wenn der Benutzer die Seite also offen gelassen hat, sagen wir mal Vor den Wochenenden und nach ein paar Tagen wieder dort, wird Ihre Sitzung wahrscheinlich abgelaufen sein, aber Cookies sind immer noch da.

Fügen Sie diesen Code am Anfang einer Seite ein (vor jeder HTML-Ausgabe, da Cookies nur vor einem Echo / Druck richtig gesetzt werden):

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

Dann können Sie später darauf zugreifen:

$var = $_COOKIE['origin_ref'];

Zusätzlich zu dem, was @pcp über das Escapezeichen von $ _SERVER ['HTTP_REFERER'] vorgeschlagen hat, möchten Sie bei Verwendung von Cookies möglicherweise auch $ _COOKIE ['origin_ref'] bei jeder Anforderung maskieren.

Kainax
quelle
-4

Versuche dies

(isset ($_SERVER['HTTP_CLIENT_IP']) ? 
    $_SERVER['HTTP_CLIENT_IP'] : 
    (isset ($_SERVER['HTTP_X_FORWARDED_FOR']) ? 
        $_SERVER['HTTP_X_FORWARDED_FOR'] : 
        $_SERVER['REMOTE_ADDR']
    )
)
user11688571
quelle
Hier geht es darum, etwas zu bekommen, IP ADDRESSaber in dem Beitrag geht es um eine REFERERWebseite, die zu der fraglichen führte.
Sanxofon