본문으로 바로가기

[PHP] checkdnsrr함수

category Helloworld!/PHP 2013. 2. 28. 11:19

int checkdnsrr ( string host [, string type])

- 인터넷 호스트 네임이나 IP 어드레스에 대응되는 DNS 레코드를 체크함
- host에 대응이 되는 type의 레코드를 DNS에서 찾아 어떠한 레코드라도 발견이 되면 TRUE를 반환

- 그리고 레코드가 발견되지 않거나 에러가 발생하면 FALSE를 반환.


typeA, MX, NS, SOA, PTR, CNAME 중에 있거나 다른 것이 올수도 있다. 디폴트 값은 MX 입니다.
Host는 IP 어드레스이거나 호스트 네임


ex)

function validate_email($email){
   $exp = "/^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$/i";
   if(preg_match($exp,$email)){
      if(checkdnsrr(array_pop(explode("@",$email)),"MX")){
        return true;
      }else{
        return false;
      }
   }else{
      return false;
   }    
}

exp는 이메일의 형식인지 확인하기 위한 정규식이다.

array_pop(explode("@",$email)

이 입력한 메일에서 도메인값만 가져오는 부분이다.

(array_pop함수 참고 : 내가 블로그에 작성한 array_pop함수 설명한 내용 확인할 것)

만약 MX이면 메일이 맞다는 true반환, 아니라면 false반환한다.


또한, A, MX, NS, SOA, PTR, CNAME에 대한 설명은 다음과 같다.


 레코드 종류

 레코드

상세 설명

 NS

 도메인의 네임서버 정보

 MX

 도메인의 MX(Mail Exchanger) 서버

 A

 호스트의 IP주소

 CNAME

 별칭으로 부여된 canonical name

 SOA

 도메인의 start-of-authority정보

 HINFO

 호스트의 CPU 정보와 운영체제 정보

 MINFO

 메일박스와 메일 리스트 정보

 PTR

 IP주소에 대한 호스트명

 TXT

 호스트에 대한 텍스트 정보

 UNIFO

 사용자 정보

 ANY

 호스트에 관련된 모든 레크드들의 정보


* 참고사이트 :

checkdnsrr함수 설명 : http://combay.co.kr/php_manual_ko/function.checkdnsrr.html