2012-01-29 12 views
22

मैं एक 404 पेज चाहता हूं जो पता लगा सकता है कि कोई उपयोगकर्ता मेरे पृष्ठ के माध्यम से या तो मेरी साइट के माध्यम से, मेरे संक्षिप्त यूआरएल या किसी अन्य साइट के माध्यम से आया है, और मैं इसे PHP का उपयोग कर रहा हूं। मैं धीरे-धीरे PHP के साथ पकड़ने जा रहा हूं और यह एक साधारण सवाल हो सकता है, लेकिन मैं ईमानदार होने के लिए काफी थक गया हूं और मेरे सिस्टम में कोई कैफीन नहीं है, और मैं जितनी जल्दी हो सके अपने पोर्टफोलियो में किसी भी ढीले सिरे को बांधना चाहता हूं ।

मुझे $_SERVER['HTTP_REFERER']; PHP चर मिला है जो मुझे पूरा यूआरएल देता है, जो एक शुरुआत है। क्या कोई तरीका है कि यह मुझे केवल रूट डोमेन दे सकता है, या तो किसी अन्य चर या फ़ंक्शन के माध्यम से, यह ध्यान में रखकर कि कुछ रेफरर http: // और कुछ https: // का उपयोग कर रहे हैं (इसलिए बस सातवें चरित्र से शुरू होगा हमेशा काम नहीं करते)? इस तरह, मैं दो (या अधिक) पूर्वनिर्धारित पते के आधार पर यूआरएल से मेल खाता हूं और उस डोमेन से संबंधित सामग्री का उत्पादन कर सकता हूं।

उत्तर

37
parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) 

http://php.net/manual/en/function.parse-url.php देखें।

ध्यान दें कि रेफरर खराब होने के लिए बेहद आसान है, इसलिए यह शायद ही विश्वसनीय है।

+0

कि अद्भुत है! यह पूरी तरह से काम करता है, इस तथ्य के अलावा कि मैं 301 रीडायरेक्ट किए गए यूआरएल के साथ ऐसा नहीं कर सकता, जो मुझे लगता है कि मेरे यूआरएल शॉर्टनर के साथ समस्याएं हो सकती हैं। कोई फर्क नहीं पड़ता, मुझे एक रास्ता मिल जाएगा। –

+0

वैसे, URL को धोखा देने में कितना आसान है? क्या कोई आसानी से मेरे डोमेन को खराब कर सकता है? कैसे? –

+0

मैं कह रहा हूं * रेफरर * स्पूफ करना आसान है। यह सिर्फ मनमानी, वैकल्पिक, स्वैच्छिक डेटा अनुरोध के HTTP शीर्षलेख में भेजता है। ग्राहक वहां कुछ भी भेज सकता है जो वह चाहता है। ब्राउज़र प्लगइन्स हैं जो रेफरर को आपकी पसंद के किसी भी चीज़ में बदल देंगे। – deceze

3

http://php.net/manual/en/function.parse-url.php आपकी सर्वश्रेष्ठ शर्त हो सकती है, हालांकि आप आसानी से जो भी ढूंढ रहे हैं उसे प्राप्त करने के लिए नियमित अभिव्यक्ति का उपयोग कर सकते हैं।

0

इस करना चाहिए:

$_SERVER['SERVER_NAME'] 
+0

वास्तव में बहुत अच्छा विकल्प नहीं है जैसे कि आप 'potato.domain.com' जैसे सबडोमेन का उपयोग करते हैं और आप अपने परिणाम के रूप में 'domain.com' प्राप्त करना चाहते हैं, यह असफल हो जाएगा। ओपी ने राज्य _root डोमेन_ किया – Cassandra

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