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?

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"];

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.


4

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


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.


-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']
    )
)

Hier geht es darum, etwas zu bekommen, IP ADDRESSaber in dem Beitrag geht es um eine REFERERWebseite, die zu der fraglichen führte.
Sanxofon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.