Czy uzyskać odwołanie do oryginalnego adresu URL w PHP?


110

Używam, $_SERVER['HTTP_REFERER'];aby uzyskać adres URL strony referencyjnej. Działa zgodnie z oczekiwaniami, dopóki użytkownik nie kliknie innej strony, a osoba odsyłająca nie przejdzie do ostatniej strony.

Jak zapisać oryginalny odsyłający adres URL?

Odpowiedzi:


137

Przechowuj go w pliku cookie (jeśli jest to akceptowalne w Twojej sytuacji) lub w zmiennej sesji.

session_start();

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

13
Zwróć uwagę na radę @pcp w odpowiedzi poniżej!
d -_- b

6
Zauważ, że powinieneś również sprawdzić, czy http_refereristnieje, ponieważ często tak nie jest, co może spowodować błąd „Niezdefiniowany indeks”.
Justin

17

Jak zasugerował Johnathan, chciałbyś zapisać go w pliku cookie lub sesji.

Najłatwiejszym sposobem byłoby użycie zmiennej sesji.

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

Umieść to na górze strony, a zawsze będziesz mieć dostęp do pierwszego referer, przez który skierował odwiedzający witrynę.


4

Przechowuj go w pliku cookie, który trwa tylko podczas bieżącej sesji przeglądania


4

Używanie Cookie jako repozytorium strony referencyjnej jest w większości przypadków znacznie lepsze, ponieważ pliki cookie będą przechowywać stronę odsyłającą do zamknięcia przeglądarki (i zachowają ją nawet, jeśli karta przeglądarki jest zamknięta), więc w przypadku, gdy użytkownik zostawił stronę otwartą, powiedzmy przed weekendami i wrócisz do niego po kilku dniach, Twoja sesja prawdopodobnie wygaśnie, ale pliki cookie nadal tam będą.

Umieść ten kod na początku strony (przed jakimkolwiek wyjściem html, ponieważ pliki cookie będą poprawnie ustawione tylko przed jakimkolwiek echem / printem):

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

Następnie możesz uzyskać do niego dostęp później:

$var = $_COOKIE['origin_ref'];

Oprócz tego, co @pcp zasugerował na temat ucieczki $ _SERVER ['HTTP_REFERER'], podczas korzystania z plików cookie możesz również chcieć uciec $ _COOKIE ['origin_ref'] przy każdym żądaniu.


-4

Spróbuj tego

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

Chodzi o zdobycie, IP ADDRESSale post dotyczy REFERERstrony internetowej, która doprowadziła do tej, o której mowa.
Sanxofon
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.