PHP

2011-11-22 9 views
5

में कोई डोमेन नाम एक CNAME है या नहीं, यह जांच कैसे करें कि पृष्ठ तक पहुंचने वाला यूआरएल मूल यूआरएल है या यदि यह एक सीएनएन रिकॉर्ड है।PHP

उदाहरण के लिए, मेरे पास domain.com साइट है। उपयोगकर्ता एक सीएनएन सेट कर सकते हैं जहां वे हमारी साइट domain.com पर www.otherdomain.com लिंक करते हैं।

हमारे सर्वर के दृष्टिकोण से, मैं कैसे पता लगा सकता हूं कि पृष्ठ तक पहुंचने वाला यूआरएल वास्तविक है (domain.com) या सीएनएन एक (www.otherdomain.com)?

+0

क्या इस तरह के विचार को समर्पित आईपी की आवश्यकता होती है? – JBithell

उत्तर

9

मुझे लगता है कि आपको इसे जानने के लिए एक DNS से ​​पूछना है, क्योंकि यह जानकारी आमतौर पर अनुरोध हेडर में नहीं आती है।

PHP दस्तावेज़ में dns_get_record और checkdnsrr फ़ंक्शंस पर एक नज़र डालें।

+0

dns_get_record सही उत्तर है। मुझे यह काम करने के लिए मिला है। धन्यवाद। – Pinkie

2

आप PHPDNS कक्षा पुस्तकालय का उपयोग यह पता लगाने के लिए कर सकते हैं कि किस प्रकार का DNS रिकॉर्ड दिया गया यूआरएल है।

$answer->results[x]->typeid //Textual record type ID (A, MX, CNAME etc) 
1

यदि आप यूआरएल पर जांच कर रहे हैं, तो आप PHP में $_SERVER['HTTP_HOST'] का उपयोग कर सकते हैं। यह यूआरएल से अनुरोधित मेजबान है (उदाहरण के लिए http://otherdomain.com/blah.php सर्वर var otherdomain.com होगा)। $_SERVER['SERVER_NAME'] httpd.conf में कॉन्फ़िगर किया गया servername है।

यदि HTTP_HOST! = SERVER_NAME, दूरस्थ उपयोगकर्ता साइट तक पहुंचने के लिए लगभग किसी प्रकार के उपनाम का उपयोग कर रहा है।

+0

दोनों HTTP_HOST और HTTP_NAME मुझे otherdomain.com दे रहे हैं – Pinkie