PHPのcheckdnsrrでDNSレコードの存在が正しく確認できない場合の対策


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レコードしか設定しない所があることがわかりました。

atnr.net の RSS登録はこちらから

コメントは受け付けていません。