PHP get DNS Nameserver , Cname , MX , A records of a domain

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

Last Updated On : 27th May 2013

Subscribe to get updates delivered to your inbox

1 Comment + Add Comment

Leave a comment