2012-12-19 8 views
7

Tarayıcı sunucuya header bilgisi gönderdiğinde, $_SERVER['HTTP_REFERER'] bize önceki sayfa URL'sini sağlamalıdır?

başlık bilgisi sunucuya gönderilmez $_SERVER['HTTP_REFERER'], döner ne olacak? boş dize? yanlış? boş? ya da ... kullanıcı tarayıcı üzerinde belirli ayar kırmak çünkü

+5

Kullanım 'var_dump ($ _ SERVER)' kullanabilir ve kendiniz görün olacak. – Barmar

cevap

9

muhtemelen ayarlı değil. Bu durumda ayarlanıp ayarlanmadığı, sunucuya bağlı olabilir. okurken

tüm HTTP isteği başlıklarıyla olduğu gibi, varlığını kontrol edin:

$httpReferer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null; 
4

$_SERVER['HTTP_REFERER'] gerçekten güvenilir değildir. Ama evet önceki URL'sini içermelidir ve başlıkları sunucu yapılandırmasına bağlı olarak, gönderilmez boş bir dize veya NULL döndürür. boş bir dize olabilir ancak HTTP referer istek başlığı sonra $_SERVER['HTTP_REFERER'] gönderilmezse

+0

$ _SERVER ['HTTP_REFERER'] için güvenilir alternatif ne olabilir? – Dheeraj

+1

@Dheeraj Güvenilir bir alternatif yok. '$ _SERVER ['HTTP_REFERER']' 'PHP süper küresel, basit bir şekilde 'Referer' HTTP istek başlığının değerini rapor eder. Güvenilir olmayan bir HTTP istek başlığıdır. _referring document_ başka şekilde iletilmiyor. – MrWhite

0

$ _SERVER küresel dizi değişkendir ve yönlendiren değeri anahtar http_referer ile dizinin bir elementtir. Tarayıcı tarafından yönlendirici başlığı gönderilmezse, öğe diziden eksiktir. Bir dizi array_key_exists bir öğe olup olmadığını kontrol edebilirsiniz; Bu durumda: Bu set değilken

array_key_exists('HTTP_REFERER', $_SERVER)

-1

değeri null veya tanımsız olacaktır ya.

alternatif

$_SERVER['REDIRECT_URL'] 
+0

'$ _SERVER [ 'REDIRECT_URL'] 'değil "alternatif"' $ _SERVER içindir [ 'HTTP_REFERER']'. Bu iki değişken oldukça farklı bilgiler içermektedir. "REDIRECT_URL", dahili bir yeniden yazım olduğunda _current request_ dosyasının (_referring request_ değil) orijinal URL yoludur. Bu _server_ tarafından belirlenir, _browser_ değil. (Ortak kullanım durumu, bir sunucunun hata belgesini tetikleyen istek hakkında bilgi almaktır.) – MrWhite