2014-05-21 2 views
0
$domain= "stackexchange.com"; 
if (checkdnsrr($domain,"MX")){ 
    echo "yup! " . $domain ." is valid domain"; 
    } 
else{ 
    echo "nope " . $domain ." invalid domain!"; 
} 

입력 한 도메인이 유효한지 여부를 확인하기 위해이 코드를 사용했습니다. 그 작동하지만 난 그것에 하위 도메인을 줄 때, 그것의 난이 코드를 삽입하면PHP를 사용하여 도메인 및 하위 도메인 유효성 검사

$domain= "wordpress.stackexchange.com"; 
    if (checkdnsrr($domain,"MX")){ 
     echo "yup! " . $domain ." is valid domain"; 
     } 
    else{ 
     echo "nope " . $domain ." invalid domain!"; 
    } 

는, 그것으로 오는 도메인을 찾을 수 없습니다 말한다 도메인을 찾을 수 없습니다. 누구에게도 해결책이 있습니까 ??

+3

하위 도메인에 반드시 MX 레코드가있을 필요는 없습니다. 대신 A 레코드를 확인하십시오. –

+0

@LinusKleen A 레코드는 필수입니까? 아마 NS 기록? –

+0

@LinusKleen 하위 도메인이나 도메인에 반드시 A 레코드가있는 것은 아닙니다. 'mail.example.com'은 MX/TXT를 가질 수 있지만 A는 없습니다. – ceejayoz

답변

2

사용자 Linus가 지적했듯이 하위 도메인에는 반드시 MX 레코드가있는 것은 아닙니다. A 레코드를 확인하는 것이 좋습니다.

도메인이 유효한 DNS 레코드를 가지고 있지만 사이트가 유효하지 않을 수도 있습니다.

사이트가 살아 있는지 확인하는 더 좋은 방법은 fsockopen() 기능을 사용하는 것입니다. 예를 들어

: 심지어 다음

function isValidSite($url, $port = 80, $timeout = 1) { 
    $isValid = false; 
    $check = @fsockopen($url, $port, $errno, $errstr, $timeout); 
    if ($check) { 
     $isValid = true; 
     @fclose($check); 
    } 
    return $isValid; 
} 

var_dump(isValidSite('test.stackexchange.com')); // returns 'true' 

...이 유효한 테스트하지 않을 수 있습니다. 일부 웹 서버는 존재하지 않는 하위 도메인에 액세스하려고하면 404 페이지로 리디렉션하거나 경고를 표시하는 모든 규칙을 캐치 (catch all rule)로 구현합니다.

또 다른 옵션은 CURL GET 요청을 만들어 헤더 만 반환하고 응답 헤더 코드가 200 (HTTP OK)인지 확인하여 도메인/하위 도메인이 유효한지 확인합니다. 이러한 다양한 시나리오를 어떻게 처리 할 것인가는 사용자에게 달려 있습니다 ...

관련 문제