2009-07-17 15 views
5

से योजना और होस्ट निकालें मेरे पास $_SERVER['HTTP_REFERER'] — का दावा है कि यह http://example.com/i/like/turtles.html है। क्या मैं अपनी ही चर में स्ट्रिंग से बाहर सिर्फ http://example.com हिस्सा प्राप्त करने के लिए, और की दुकान यह आवश्यकता होगी?HTTP_REFERER

+1

एक sidenote के रूप,: फिर आप host साथ scheme के संयोजन के द्वारा अपने अंतिम मूल्य का निर्माण होगा Referer हमेशा ग्राहक द्वारा नहीं भेजा जाता है (यह उदाहरण के लिए, निष्क्रिय किया जा सकता है), और यह फिक किया जा सकता है। तो, इस पर किसी भी महत्वपूर्ण कार्यशीलता (न ही सुरक्षा उन्मुख) का आधार मत बनो! –

+0

@ पास्कलमार्टिन ध्वनि सलाह। लेकिन, मुझे लगता है कि एक HTTP POST अनुरोध से $ _SERVER (या, फ़िल्टर_इनपुट()/filter_input_array()) का उपयोग कर HTTP_REFERER की जांच के लिए एक मामला बनाया जा सकता है। –

उत्तर

15

इस उदाहरण में, सबसे अच्छा समाधान PHP के parse_url method उपयोग करने के लिए किया जाएगा सक्षम होना चाहिए। यह यूआरएल को एक एसोसिएटिव सरणी में विभाजित करता है। सिर्फ एक टिप्पणी

if ($parts = parse_url("http://example.com/i/like/turtles.html")) { 
    echo $parts[ "scheme" ] . "://" . $parts[ "host" ]; 
} 
13

मैं निम्नलिखित तरीके से parse_url का उपयोग करेंगे ...

if ($urlParts = parse_url($myURI)) 
    $baseUrl = $urlParts["scheme"] . "://" . $urlParts["host"]; 
2

आप रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं:

if (isset($_SERVER['HTTP_REFERER']) && preg_match('@^[^/]+://[^/][email protected]', $_SERVER['HTTP_REFERER'], $match)) { 
    var_dump($match[0]); 
} 

या आप parse_url function इस्तेमाल कर सकते हैं।

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