PHP

2010-01-15 7 views
5

में रेफ़रल URL इसलिए मैं उस पृष्ठ को प्राप्त करने का प्रयास कर रहा हूं जहां एक आगंतुक आया था। मैंने इस कोड को एक php फ़ाइल में डाला और मैं पृष्ठ के यूआरएल को देखने की कोशिश कर रहा हूं लेकिन यह काम नहीं कर रहा है, कोई सुझाव?PHP

<?php 

    $ref = getenv("HTTP_REFERER"); 
    echo $ref; 

?> 

(कुछ जवाब के बाद यह जोड़ा) मैं भी

print $_SERVER["HTTP_REFERER"]; 

की कोशिश की है और है कि या तो काम नहीं करता है

यह बाद मैं वेबसाइट कई बार, यकीन नहीं क्यों अद्यतन काम किया पहली जगह में कोई समस्या थी, वैसे भी धन्यवाद :)

+1

आपका क्या मतलब है "काम नहीं कर रहा"? – Sampson

+0

मेरा मतलब है, यह कुछ भी नहीं लौटा। मैंने इसे गूंजने की कोशिश की, यह कुछ भी प्रिंट नहीं करता है, मैंने इसे एक चर में स्टोर करने की कोशिश की, परिवर्तनीय "" (कुछ नहीं) रखता है। – user220755

उत्तर

19

क्या आपने $_SERVER सुपरग्लोबल के माध्यम से पहुंचने का प्रयास किया है?

print $_SERVER["HTTP_REFERER"]; 
+0

या तो – user220755

+0

काम नहीं करता है क्या आपको कोई त्रुटि मिल रही है? – Sampson

+2

आपकी स्क्रिप्ट मानना ​​सही है (जैसा कि सिंटैक्स त्रुटि इत्यादि के विपरीत है) क्या आप निश्चित हैं कि एक http रेफरर है? अपने HTTP शीर्षलेखों की जांच करें, क्योंकि PHP वहां से रेफरर प्राप्त करता है। यदि ग्राहक ने रेफरर नहीं भेजा है, तो कोई भी नहीं होगा। – futureelite7

2

getenv() अगर यह एक CGI स्क्रिप्ट के रूप में चलाने जा रहा है प्रयोग किया जाता है। एक एसएपीआई के साथ आप $_SERVER["HTTP_REFERER"] का उपयोग करते हैं।

4

$ _SERVER ['HTTP_REFERER'] इस जानकारी तक पहुंचने का सबसे अच्छा तरीका है।

अन्य प्रतिक्रियाओं पर अपनी टिप्पणी के आधार पर:

  1. आप वास्तव में कहीं से आ रहे हैं? यदि आप अपने ब्राउज़र को रीफ्रेश करते हैं तो यह मान संभवतः नहीं भेजा जाएगा। तो सुनिश्चित करें कि आपका ब्राउज़र हेडर भेज रहा है। यदि आप इस स्क्रिप्ट को सार्वजनिक यूआरएल पर डालते हैं, तो मुझे इसे जांचने और सत्यापित करने में खुशी होगी।
  2. आपको वास्तव में सभी त्रुटियों को चालू करना चाहिए। यदि हेडर नहीं भेजा गया है और आप इसे किसी भी तरह एक्सेस करते हैं, तो PHP एक E_NOTICE उत्सर्जित करेगा। यदि आप अपना कोड डिबग कर रहे हैं तो आपको सभी त्रुटि संदेश चालू करना चाहिए और सुनिश्चित करें कि कोई E_NOTICE या इससे भी बदतर नहीं है। HTTP_REFERER साथ एक टिप्पणी है:
0

फिर, http://php.net/manual/en/reserved.variables.server.php पढ़

पेज के पते (यदि हो तो), जो वर्तमान पृष्ठ से उपयोगकर्ता एजेंट भेजा। यह उपयोगकर्ता एजेंट द्वारा निर्धारित है। सभी उपयोगकर्ता एजेंट इसे सेट नहीं करेंगे, और कुछ एक विशेषता के रूप में HTTP_REFERER को संशोधित करने की क्षमता प्रदान करते हैं। संक्षेप में, पर वास्तव में विश्वसनीय नहीं किया जा सकता

3

शायद एक बेवकूफ टिप्पणी, लेकिन $_SERVER["HTTP_REFERER"] केवल तभी काम करता है यदि आप एक हाइपरलिंक का उपयोग कर पृष्ठ दर्ज करते हैं। उदा। अगर आप सीधे अपने ब्राउज़र में लिंक स्थान दर्ज

/goto.html

<a href="refer.php">go to refer</a> 

/refer.php

<?php 
print "You entered using a link on ".$_SERVER["HTTP_REFERER"]; 
?> 

HTTP_REFERER काम नहीं करता।

1

आप इन सभी प्रश्नों के उत्तर की गणना करते हैं, तो आप कुछ के साथ अंत की तरह लग रही:

<?php 
if isset($_SERVER['HTTP_REFERER']) { 
    $ref = $_SERVER['HTTP_REFERER']; 
} 
else { 
    $ref = "Direct Entry"; 
} 
?> 
2
<?php 
    echo $_SERVER['HTTP_REFERER']; 
?> 

ऊपर कोड काम करता है! हालांकि, मेरे कई छात्रों को यह समझना मुश्किल है कि, $_SERVER['HTTP_REFERER']कोलिंक से प्राप्त करने की आवश्यकता है।

मैं उन्हें नीचे (परीक्षण किया) कोड (या "वेब पेज") प्रदर्शित करने के लिए दे। उपरोक्त कोड नीचे है।

शो-referer.php

<?php 
    if (isset($_SERVER['HTTP_REFERER'])) { 
    $referer = $_SERVER['HTTP_REFERER']; 
    } else { 
    $referer = 'No Link - No Referer - Direct URL Entry'; 
    } 
    echo $referer; 
?> 

<p>See the referer in action 
    <a href="show-referer.php">from this page!</a> 
</p> 

<?php 
    echo $_SERVER['HTTP_REFERER']; 
?> 

ही शो-referer.php पृष्ठ लिंक जब आप जो ब्राउज़र एक HTTP_REFERER उत्पन्न करने के लिए कारण चाहिए लिंक पर क्लिक करें।

संबंधित मुद्दे