PHP के साथ मूल URL संदर्भ प्राप्त करें?


110

मै इस्तेमाल कर रहा हूँ $_SERVER['HTTP_REFERER']; संदर्भकर्ता Url प्राप्त करने के लिए । यह तब तक अपेक्षा के अनुसार काम करता है जब तक कि उपयोगकर्ता किसी अन्य पृष्ठ पर क्लिक नहीं करता है और संदर्भकर्ता अंतिम पृष्ठ पर बदल जाता है।

मैं मूल संदर्भ Url को कैसे संग्रहीत करूं?

जवाबों:


137

इसे कुकी में स्टोर करें (यदि यह आपकी स्थिति के लिए स्वीकार्य है), या सत्र चर में।

session_start();

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

13
कृपया नीचे दिए गए उत्तर में @ pcp की सलाह पर ध्यान दें!
d -_- b

6
ध्यान दें कि आपको यह भी जांचना चाहिए कि क्या http_refererमौजूद है, क्योंकि यह अक्सर नहीं होता है, जिससे "अनिर्धारित सूचकांक" त्रुटि हो सकती है।
जस्टिन

17

जॉनथन सुझाव के रूप में, आप या तो इसे कुकी या सत्र में सहेजना चाहेंगे।

सत्र चर का उपयोग करने का आसान तरीका होगा।

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

उस पृष्ठ के शीर्ष पर रखें, और आप हमेशा उस साइट पर आने वाले पहले रेफ़र को एक्सेस कर पाएंगे जिसका निर्देशन आगंतुक ने किया था।


4

इसे कुकी में संग्रहीत करें जो केवल वर्तमान ब्राउज़िंग सत्र के लिए रहता है


4

कुकी का संदर्भ पृष्ठ के भंडार के रूप में उपयोग करना ज्यादातर मामलों में बेहतर होता है, क्योंकि कुकीज़ तब तक रेफ़र करते रहेंगे जब तक कि ब्राउज़र बंद नहीं हो जाता (और ब्राउज़र टैब बंद होने पर भी इसे रखेगा), इसलिए यदि उपयोगकर्ता ने पृष्ठ को खुला छोड़ दिया है, तो हम कहेंगे सप्ताहांत से पहले, और कुछ दिनों के बाद उस पर लौटा, आपका सत्र संभवतः समाप्त हो जाएगा, लेकिन कुकीज़ अभी भी वहां मौजूद हैं।

उस कोड को एक पेज की शुरुआत में (किसी भी HTML आउटपुट से पहले, क्योंकि कुकीज़ ठीक से किसी भी इको / प्रिंट से पहले सेट किया जाएगा):

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

फिर आप इसे बाद में एक्सेस कर सकते हैं:

$var = $_COOKIE['origin_ref'];

और @pcp ने $ _SERVER ['HTTP_REFERER'] से बचने के बारे में जो सुझाव दिया है, इसके अलावा, कुकी का उपयोग करते समय, आप प्रत्येक अनुरोध पर $ _COOKIE ['original_ref'] से बचना भी चाह सकते हैं।


-4

इसे इस्तेमाल करे

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

यह प्राप्त करने के बारे में है, IP ADDRESSलेकिन यह पोस्ट REFERERवेब पेज के बारे में है जिसके कारण यह प्रश्न में एक है।
शाम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.