PHP has a useful function called dns_get_record that can be used to get different types of records for a give domain , very easily.
Nameserver - NS Records :
$ php -a
Interactive shell
php > print_r(dns_get_record('www.binarytides.com' , DNS_NS));
Array
(
[0] => Array
(
[host] => binarytides.com
[type] => NS
[target] => omikro1.allwebserver.com
[class] => IN
[ttl] => 86140
)
[1] => Array
(
[host] => binarytides.com
[type] => NS
[target] => omikro2.allwebserver.com
[class] => IN
[ttl] => 86140
)
)
php >
A Record - IP address :
php > print_r(dns_get_record('www.binarytides.com' , DNS_A));
Array
(
[0] => Array
(
[host] => binarytides.com
[type] => A
[ip] => 64.131.72.23
[class] => IN
[ttl] => 14046
)
)
php >
Another simple method to get the A record or IP address of a domain name is to use the function gethostbyname :
php > print_r(gethostbyname('www.binarytides.com'));
64.131.72.23
php >
Another method gethostbynamel would give an array of IPs :
php > print_r(gethostbynamel('www.google.com'));
Array
(
[0] => 74.125.71.147
[1] => 74.125.71.99
[2] => 74.125.71.104
[3] => 74.125.71.106
[4] => 74.125.71.105
[5] => 74.125.71.103
)
php >
MX Record - Mail Server :
MX Records give the mail server for a given domain. These mail servers can be used to send mails to a certain email on that domain say [email protected]
php > print_r(dns_get_record('www.binarytides.com' , DNS_MX));
Array
(
[0] => Array
(
[host] => binarytides.com
[type] => MX
[pri] => 0
[target] => binarytides.com
[class] => IN
[ttl] => 14400
)
)
php >
For MX records there is an alternative function called getmxrr , which can be used like this :
php > getmxrr('www.binarytides.com' , $mxhosts);
php > print_r($mxhosts);
Array
(
[0] => binarytides.com
)
php >
It returns an array of mxhosts for a given hostname/domain.
CNAME Records - Canonical Alias :
php > print_r(dns_get_record('www.binarytides.com' , DNS_CNAME));
Array
(
[0] => Array
(
[host] => www.binarytides.com
[type] => CNAME
[target] => binarytides.com
[class] => IN
[ttl] => 13932
)
)
php >
With the DNS_ALL option you can get all the above information at once :
php > print_r(dns_get_record('www.binarytides.com' , DNS_ALL));
Array
(
[0] => Array
(
[host] => binarytides.com
[type] => A
[ip] => 64.131.72.23
[class] => IN
[ttl] => 14202
)
[1] => Array
(
[host] => binarytides.com
[type] => NS
[target] => omikro2.allwebserver.com
[class] => IN
[ttl] => 86344
)
[2] => Array
(
[host] => binarytides.com
[type] => NS
[target] => omikro1.allwebserver.com
[class] => IN
[ttl] => 86344
)
[3] => Array
(
[host] => www.binarytides.com
[type] => CNAME
[target] => binarytides.com
[class] => IN
[ttl] => 13800
)
[4] => Array
(
[host] => binarytides.com
[type] => SOA
[mname] => host1.allwebserver.com
[rname] => omikrosys.gmail.com
[serial] => 2011020202
[refresh] => 86400
[retry] => 7200
[expire] => 3600000
[minimum-ttl] => 86400
[class] => IN
[ttl] => 86344
)
[5] => Array
(
[host] => binarytides.com
[type] => MX
[pri] => 0
[target] => binarytides.com
[class] => IN
[ttl] => 14199
)
)
php >
Other options available are :
DNS_HINFO, DNS_PTR, DNS_SOA, DNS_TXT, DNS_AAAA, DNS_SRV, DNS_NAPTR, DNS_A6, DNS_ANY.
References :
1. Manual at : http://php.net/manual/en/function.dns-get-record.php