2012-07-19 14 views
11

का उपयोग कर PHP में होस्टनाम को हल करें मैं PHP, का उपयोग करके होस्ट नाम को होस्ट नाम कैसे हल कर सकता हूं लेकिन विभिन्न नेमसर्वर (उदाहरण के लिए OpenDNS या Google Public DNS) का उपयोग कर।विभिन्न नाम सर्वर

यह प्रतीत नहीं कि dns_get_record() या gethostbyname() (टीसीपी/आईपी सेटिंग्स में या /etc/resolv.conf में) एक वर्तमान प्रणाली पर स्थापित से एक अलग नेम सर्वर का उपयोग करने में सक्षम हैं।

एक ही रास्ता मैंने पाया नाशपाती वर्ग नेट/DNS का उपयोग किया जाता है, लेकिन यह मुझे पीएचपी 5.4 के तहत चेतावनी के बहुत सारे देता है

+0

क्या यह निष्पादन के माध्यम से एक पायथन स्क्रिप्ट चलाने का विकल्प है और केवल खोल आउटपुट पढ़ता है? मैंने एसओ पर urllib2 में हल की गई यह समस्या देखी है: http: //stackoverflow.com/questions/2236498/tell-urllib2-to-use-custom-dns/2237040#2237040 – DeaconDesperado

+0

@DeaconDesperado: एक पायथन लिपि का उपयोग क्यों करें ? यदि आप PHP में 'exec' कर सकते हैं, तो क्यों न केवल यूनिक्स 'होस्ट' कमांड को कॉल करें? 'exec ('host google.com 8.8.8.8')'? –

+0

@ रॉकेट, बस यह सुझाव दे रहा है कि मैं किससे परिचित था, इसलिए जवाब के बजाय टिप्पणी;) – DeaconDesperado

उत्तर

7

प्रयास करें net_dns2 (यह नाशपाती में भी है)।

+0

आशाजनक लग रहा है, आपको जल्द ही प्रतिक्रिया देगा – Nick

+0

requ_once 'नेट/DNS2.php'; $ resolver = new Net_DNS2_Resolver (सरणी ('नेमसर्वर' => सरणी ('8.8.8.8')); $ resp = $ resolver-> क्वेरी ("hooktube.com।", 'ए'); print_r ($ resp); echo $ resp-- उत्तर [0] -> पता; – Nick

6

यदि आपको अपनी स्क्रिप्ट से शैल स्क्रिप्ट चलाने की अनुमति है, तो आप सिस्टम के nslookup कमांड का उपयोग कर सकते हैं।

$host = 'stackoverflow.com'; 
$dns = '8.8.8.8'; // Google Public DNS 

$ip = `nslookup $host $dns`; // the backticks execute the command in the shell 

$ips = array(); 
if(preg_match_all('/Address: ((?:\d{1,3}\.){3}\d{1,3})/', $ip, $match) > 0){ 
    $ips = $match[1]; 
} 

print_r($ips); 

नोट: का उपयोग escapeshellarg$host अगर और $dns उपयोगकर्ता इनपुट से कर रहे हैं।

+0

@jcarlosweb: मुझे खेद है, लेकिन मैं समझ नहीं पा रहा हूं कि आप क्या पूछ रहे हैं। –

+0

क्षमा करें। यह जानने के लिए कि क्या Google सार्वजनिक dns का उपयोग कर मेरे वेब का विज़िटर है? – jcarlosweb

+2

इसका पता लगाने का कोई तरीका नहीं है। वैसे भी आपको ऐसी जानकारी क्यों चाहिए? – Nick

9
<? 
require_once 'Net/DNS2.php'; 

$resolver = new Net_DNS2_Resolver(array('nameservers' => array('208.67.222.123'))); 

$resp = $resolver->query("hooktube.com.", 'A'); 

print_r($resp); 

echo $resp->answer[0]->address; 
+0

यह संभव है यदि मेरे वेब के विज़िटर का आईपी हो। क्या विज़िटर Google को DNS का उपयोग करता है? – jcarlosweb

+1

हां, लेकिन इसके लिए आपको dns2 का उपयोग करने की आवश्यकता नहीं है। apache/php आपको इसके लिए $ _SERVER [REMOTE_ADDR] देता है।यदि अनिश्चित है - print_r ($ _ सर्वर) करें या इसके बारे में प्रश्न पूछें। – Nick

+0

क्षमा करें। यह जानने के लिए कि क्या Google सार्वजनिक dns का उपयोग कर मेरे वेब का विज़िटर है? – jcarlosweb

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