Resolve hostname in PHP using different name server

落花浮王杯 提交于 2020-01-12 04:30:07

问题


How I can resolve hostname to IP address using PHP, but using different nameserver (eg. OpenDNS or Google Public DNS).

It not seem that dns_get_record() or gethostbyname() are able to use a different nameserver than one currently set up on the system (in TCP/IP settings or in /etc/resolv.conf).

The only way I've found is using PEAR class Net/DNS, but it gives me lots of warnings under PHP 5.4


回答1:


Try net_dns2 (it's also in PEAR).




回答2:


<?
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;



回答3:


If you are allowed to run shell scripts from your script, you can use the system's nslookup command.

$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);

Note: use escapeshellarg if $host and $dns are from user input.



来源:https://stackoverflow.com/questions/11563956/resolve-hostname-in-php-using-different-name-server

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!