일부 DNS TXT 레코드의 유효성을 검사해 보겠습니다. 👍

3716 단어 phptutorialdns
다음은 시나리오입니다. 사용자가 있다고 가정해 보겠습니다. 그리고 해당 사용자는 도메인을 판매하거나 프로필에 도메인을 추가할 수 있습니다.

이제 여러 방법으로 해당 도메인을 소유하고 있는지 확인할 수 있습니다. 도메인을 보여주는 대시보드 사진을 보내도록 할 수 있습니다. 또는 그들에게 당신만을 위한 페이지를 만들게 할 수도 있습니다.

이 두 시나리오 모두 기복이 있습니다. 예를 들어 그림과 같이 사용자는 브라우저의 개발자 도구를 사용하여 도메인을 쉽게 추가할 수 있습니다. 페이지의 경우 번거롭습니다.

대신 DNS에 TXT 레코드를 추가하도록 요청한 다음 확인할 수 있습니다. 다음은 PHP에서 이를 검증하는 빠르고 쉬운 방법입니다.

DNS 레코드 가져오기 기능.



DNS 레코드를 얻는 것이 어렵다고 생각할 수도 있습니다. 그러나 두려워하지 마십시오. PHP에는 이를 위한 내장 기능이 있습니다. 소개dns_get_record . 🎉

이 함수는 연관 배열의 배열에서 주어진 호스트 이름에 대한 DNS 레코드를 반환합니다. 이제 이 함수가 기본적으로 반환할 모든 레코드를 얻을 수 있습니다. 하지만 호스트 이름의 TXT 레코드가 필요하므로 해당 레코드만 가져오도록 하겠습니다.

$records = dns_get_record('example.com', DNS_TXT);


TXT 레코드가 없으면 빈 배열이 반환됩니다.

키에 대한 유효성 검사.



이제 우리는 $records . 키에 대해 유효성을 검사해 보겠습니다. 그리고 배열을 반환하기 때문에 array_filterin_array 를 사용하여 매우 쉽게 할 수 있습니다.

이제 키를 포함하는 array를 생성해 보겠습니다.

$key = array('devdojo-verification=V3m0R0G00yHxVO_wWFMK1tF3nQRJ9');


이제 $records를 필터링하여 원하는 레코드만 반환할 수 있습니다. 우리 키와 일치하는 것.

$filter = array_filter($records, function ($arr) use ($key) {
    return in_array($arr['txt'], $key);
});


일치하는 항목을 찾으면 레코드가 포함된 $filter에 새 값이 생깁니다. 일치하는 항목이 없으면 $filter 빈 배열이 됩니다.

유효한지 아닌지?



이제 $filter 를 사용하여 sizeof 레코드를 확인할 수 있습니다. 일치하는 항목을 찾으면 필터의 크기가 0보다 커집니다.

print (sizeof($filter) > 0) ? 'Valid' : 'Invalid';


명심해야 할 사항.



확인 중인 호스트 이름이 www.example.com 아래에 TXT 레코드를 추가하고 확인 중인 경우 example.com . 당신은 일치를 찾을 수 없습니다. www.example.comexample.com 이후 두 개의 다른 레코드를 반환합니다.

올바른 호스트 이름을 확인해야 함을 명심하십시오. 🙂

결론적으로.



이제 TXT 레코드를 가져오고 일치 항목을 확인하는 방법을 알게 되었습니다. 모든 프로그램과 마찬가지로 이것은 확장될 수 있습니다. 수표를 훨씬 더 역동적으로 만들 수 있습니다. 예를 들어 키는 데이터베이스 또는 시스템의 파일에 있을 수 있습니다.

이것을 대기열의 작업에 추가하고 도메인이 여전히 유효한지 격일로 확인하도록 할 수 있습니다.

선택은 언제나 그렇듯이 귀하에게 달려 있습니다.

즐거운 코딩. 👍

좋은 웹페이지 즐겨찾기