2011-11-03 17 views
5

यह काम करता है जब मैं इनपुट

header("Location: http://www.google.com"); 

लेकिन यह जब मैं

header("Location: $_SERVER['HTTP_REFERER']"); 

है मैं जो कुछ पेज यह से आया करने के लिए पृष्ठ रीडायरेक्ट करना चाहते हैं काम नहीं करता।

session_start(); 
echo "Previous page:", $_SESSION['loc']; 
$_SESSION['loc']=$_SERVER['PHP_SELF']; 

पुनश्च: उपयोगकर्ता किस पृष्ठ से, मैं नहीं बल्कि सत्र चर, जो हर पृष्ठ पर रीसेट हो जाता है का उपयोग करेंगे आया :)

if (!empty($_SERVER['HTTP_REFERER'])) 
    header("Location: ".$_SERVER['HTTP_REFERER']); 
else 
    echo "No referrer."; 

हालांकि, निर्धारित करने के लिए:

+7

सभी ब्राउज़र एक रेफरर नहीं भेजते हैं, और कुछ जो करते हैं, फर्जी डेटा भेजते हैं। साथ ही, आप एक डबल-उद्धृत स्ट्रिंग के भीतर सरणी कुंजी पर उद्धरणों का उपयोग नहीं कर सकते हैं। 'हेडर ("स्थान: {$ _SERVER [' HTTP_REFERER ']}") का प्रयास करें;' इसके बजाए। –

+1

क्या आपने '$ _SERVER ['HTTP_REFERER'] 'की सामग्री की जांच की है? – PeeHaa

+0

इस स्ट्रिंग का आउटपुट क्या है: गूंज "स्थान: $ _SERVER ['HTTP_REFERER']"; ? –

उत्तर

5

यह प्रयास करें: यह केवल स्थानीय पृष्ठों के लिए काम करता है, आप अन्य वेबसाइटों को ट्रैक नहीं कर सकते हैं।

2

यह एक ब्राउज़र की सुविधा है, और किसी भी विनम्र ब्राउज़र सही हेडर भेज देंगे (हालांकि विभिन्न 'सुरक्षा' उपकरण एक नकली संदर्भित के साथ इस को पार कर जाएगी)।

यह ब्राउज़र विशिष्ट है इसलिए प्रत्येक ब्राउजर/सुरक्षा सॉफ़्टवेयर संयोजन इसे सर्वर पर नहीं भेजेगा।

header("Location: {$_SERVER['HTTP_REFERER']}"); 

मैं लिया है: आप निर्धारित करने के लिए कि उपयोगकर्ता किस पृष्ठ (या थोड़ा अधिक तर्क के साथ कुछ इसी तरह)

+0

तो प्रत्येक पृष्ठ पर वर्तमान यूआरएल का सत्र बनाएं? –

4

आप कोशिश कर सकते हैं से आया है प्रत्येक पृष्ठ लोड पर एक सत्र चर की स्थापना से बेहतर कर रहे हैं परिवर्तनीय अभिव्यक्तियों वाली समस्याएं जिनमें ब्रेसिज़ के बिना तारों में उद्धरण शामिल हैं।

आपको $_SERVER['HTTP_REFERER'] को बस सेट नहीं किया जा रहा है। कुछ उपयोगकर्ता एजेंट इसे सेट नहीं करते हैं, कुछ निजी उपकरण इसे मुखौटा करते हैं, और आपको रेफरर के बिना अपने पृष्ठ पर आने वाले लोगों को संभालने की आवश्यकता होती है।

3

यहां एक आसान समाधान है। जांच और देखते हैं कि $ _SERVER [ 'http_referer'] क्या आप दे रही है और इसके सेट तो आप अनुप्रेषित कर सकते हैं, तो और यदि नहीं गिरावट वापस की तरह यूआरएल कुछ डाल दिया है:

if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != ""){ 
$url = $_SERVER['HTTP_REFERER']; 
}else{ 
$url = "YOUR INDEX PAGE OR SOMETHING"; 
} 

header("Location: ".$url); 
0

, बस आप

if(isset($_SERVER['HTTP_REFERER'])){ 
    header("Location:".$_SERVER['HTTP_REFERER'].""); 
} 
उपयोग कर सकते हैं
1
header("Location: $_SERVER[HTTP_REFERER]"); 

एकल उद्धरण के बिना। यह अतिरिक्त संगत कोड के बिना सरणी मानों तक पहुंचने और एकत्रित करने का सबसे तेज़ तरीका है।

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