PHPのcheckdnsrrでDNSレコードを検索してサーバーの存在を確認することができますが、場合によって存在するサーバーが正しく認識されないことがあります。
今回メールアドレスのバリデーションでcheckdnsrrが使われているスクリプトを編集した際に、DNSレコードの引数なしでこの関数が使われていたのですが、checkdnsrrはレコードの引数を指定しないとホストのMXレコードを参照します。
if(checkdnrr('example.com')==true){
echo 'this server exists.';//レコードが存在する
}
else{
echo 'this server does\'t exist.';//レコードが存在しない
}
上のコードのようになっているとサーバーによってはAレコードしか設定していないため、エラーが返ってきてしまいます。
以下のコードのようにAレコードとMXレコード両方を確認するとMXレコードが設定されていないサーバーも認識されます。
if(checkdnrr('example.com','A')==true ||checkdnrr('example.com','MX')==true){
echo 'this server exists.';//レコードが存在する
}
else{
echo 'this server does\'t exist.';//レコードが存在しない
}
今回、テストで100個以上のドメインを使ってテストを行ったのですが、大学や企業のようなドメインでもAレコードしか設定しない所があることがわかりました。