Home > PHP

PHPでDNSレコードの検索

 PHPではDNSレコードを検索するという関数もあるんです。すごい世の中になってきました。checknsrrという関数です。
検索できるレコードは、PHP5ではすべてのレコードで「A, MX, NS, SOA, PTR, CNAME, AAAA, A6, SRV, NAPTR, ANY,TXT,AAAA」となります。これだけ調べれば殆ど問題ないと思います。試験的にいろいろやってみた範囲ではブレが殆どありませんでした。CNAMEでサブドメインも検索できます。
  • $result_bool = checkdnsrr(<検索ドメイン>,'<検索レコード>');
という感じで、結果はブール値で返ってきます。検索できたら1、検索できなかったら空です。
$domain = 'omnioo.com';
$result_bool = checkdnsrr($domain,'A');
if ($result_bool) {
    print $domain."は存在します。\n";
} else {
    print $domain."は存在しません。\n";
}
というような使い方ができます。
全レコードをまとめて検索したい場合は、
function domain_search ($domain) {
    $dns_record = array(A, MX, NS, SOA, PTR, CNAME, AAAA, A6, SRV, NAPTR, ANY,TXT,AAAA);
    foreach ($dns_record as $k=>$v) {
        #print "$k=>$v<br />\n";
        $result_bool = checkdnsrr($domain,"$v");
        if ($result_bool) {
            $searched_record = $v;
            break;
        } else {
            next;
        }
    }
    return $re = array($result_bool,$searched_record,$domain);
}

$domain = 'omnioo.com';

$re = array();
$re = domain_search ($domain);
foreach ($re as $k=>$v) {
    print "$k=>$v<br />\n";
}
という感じでしょうか。
関数を使って返り値は配列にしてあります。検索結果のブール値と探し当てたレコード、検索対象になったドメインを返すようになっています。もし検索できなかったらレコードも空になって返ってきます。







プロフィール



  • Name :: 山上オサム ♂(37)
  • Hobby :: 武術
  • Work :: Web Designer