2012-12-19 5 views
7

ब्राउज़र सर्वर से शीर्ष लेख जानकारी भेजता है को नहीं भेजी जाती, $_SERVER['HTTP_REFERER'] हमें पिछले पृष्ठ URL का अधिकार देना चाहिए?

$_SERVER['HTTP_REFERER'], जब हैडर जानकारी सर्वर के लिए भेजा नहीं है से क्या देता है? खाली स्ट्रिंग? असत्य? शून्य? या ...?

+5

उपयोग 'var_dump ($ _ सर्वर)' का उपयोग करें और अपने आप के लिए देखने के लिए किया जाएगा। – Barmar

उत्तर

9

तो HTTP रेफ़रर अनुरोध हेडर तो $_SERVER['HTTP_REFERER'] नहीं भेज दिया जाता है शायद सेट नहीं है, हालांकि यह एक खाली स्ट्रिंग हो सकता है। चाहे यह सेट हो या नहीं, इस मामले में सर्वर पर निर्भर हो सकता है।

सभी HTTP अनुरोध हेडर के साथ के रूप में, अपने अस्तित्व के लिए जाँच जब पढ़ने:

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

$_SERVER['HTTP_REFERER'] वास्तव में विश्वसनीय है क्योंकि उपयोगकर्ता ब्राउज़र पर विशेष सेटिंग इसे तोड़ने सकता है नहीं है। लेकिन हाँ इसमें पिछले यूआरएल होना चाहिए और सर्वर कॉन्फ़िगरेशन के आधार पर हेडर भेजे जाने पर यह खाली स्ट्रिंग या NULL वापस कर देगा।

+0

$ _SERVER ['HTTP_REFERER'] के विश्वसनीय विकल्प क्या हो सकता है? – Dheeraj

+1

@ धीरज कोई विश्वसनीय विकल्प नहीं है। '$ _SERVER ['HTTP_REFERER']' PHP superglobal बस अंतर्निहित 'रेफरर' HTTP अनुरोध शीर्षलेख के मान की रिपोर्ट करता है। यह HTTP अनुरोध शीर्षलेख है जो अविश्वसनीय है। _referring document_ किसी अन्य तरीके से पारित नहीं किया गया है। – MrWhite

0

$ _SERVER एक वैश्विक सरणी चर रहा है, और संदर्भ मूल्य कुंजी HTTP_REFERER के साथ सरणी का एक तत्व है। यदि ब्राउज़र द्वारा कोई रेफरर हेडर नहीं भेजा जाता है, तो तत्व सरणी से बस गायब है। आप जांच सकते हैं कि किसी सरणी में array_key_exists वाला तत्व है या नहीं; इस मामले में:

array_key_exists('HTTP_REFERER', $_SERVER)

-1

जब यह सेट नहीं है मूल्य या तो अशक्त या अपरिभाषित हो जाएगा।

एक वैकल्पिक

$_SERVER['REDIRECT_URL'] 
+0

'$ _SERVER [ 'रीयडायरेक्ट']' नहीं "एक विकल्प के लिए" '$ _SERVER है [ 'HTTP_REFERER']'। इन दो चरों में काफी अलग जानकारी है। 'REDIRECT_URL' एक आंतरिक पुनर्लेखन होने पर _current request_ (_referring request_ नहीं) का मूल URL-पथ है। यह _server_ द्वारा सेट किया गया है, _browser_ नहीं। (एक सामान्य उपयोग केस अनुरोध के बारे में जानकारी प्राप्त करना है जो सर्वर के त्रुटि दस्तावेज़ को ट्रिगर करता है।) – MrWhite