Jeśli potrzebujesz wewnętrznie korzystać z informacji o stronie odsyłającej w swojej witrynie (np. Między stronami witryny, a nie zewnętrznie), możesz ręcznie śledzić informacje o stronie odsyłającej użytkownika.
// Get the full URL of the current page
function current_page_url(){
$page_url = 'http';
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'){
$page_url .= 's';
}
return $page_url.'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
}
/* (Assuming session already started) */
if(isset($_SESSION['referrer'])){
// Get existing referrer
$referrer = $_SESSION['referrer'];
} elseif(isset($_SERVER['HTTP_REFERER'])){
// Use given referrer
$referrer = $_SERVER['HTTP_REFERER'];
} else {
// No referrer
}
// Save current page as next page's referrer
$_SESSION['referrer'] = current_page_url();
Następnie, aby uzyskać dostęp do strony odsyłającej, wystarczy użyć zmiennej $referrer
.
if(isset($referrer)){
echo 'Referred from "'.$referrer.'"';
echo '<a href="'.$referrer.'">Back</a>';
} else {
echo 'No referrer';
}
ten sposób, jeśli użytkownik odwiedza http://www.example.com/page_1.php
, ujrzą informacje Gadu jeśli ich przeglądarka zapewnił go, w przeciwnym razie nie ma odnośnika zwrotnego. Następnie odwiedzając stronę http://www.example.com/page_2.php
i kolejne strony Twojej witryny, strona odsyłająca będzie dostępna.
możliwe duplikat [HTTP kierujących i IE7 i IE8] (http://stackoverflow.com/questions/2460490/http-referrer-and-ie7 i-ie8) –
http://bytes.com/topic/php/answers/853533-http_referer-alternative –
@Col: dzięki za sugestię, czy jest jakaś alternatywa dla HTTP_REFERER? – pravin