dns_check_record în PHP

Rețea PHP 5.3+

Verifică dacă un domeniu are înregistrări DNS de un anumit tip (implicit MX, adică poate primi email).

Sintaxă
dns_check_record(string $hostname, string $type = 'MX'): bool

Ce face dns_check_record

dns_check_record răspunde doar cu da sau nu: există cel puțin o înregistrare de tipul cerut? Tipul se dă ca text: "MX" (implicit), "A", "AAAA", "TXT", "NS", "CNAME", "ANY".

Se folosește des la formularele de înregistrare, ca să verifici că domeniul unei adrese de email chiar poate primi mesaje. Numele vechi checkdnsrr este un alias.

Parametri

Parametru Descriere
$hostname Domeniul verificat, de exemplu "exemplu.ro".
$type Opțional. Tipul înregistrării, ca text. Implicit "MX".

Ce returnează

true dacă există înregistrări de acel tip, altfel false.

Exemple

Exemplul 1: Domeniul unui email poate primi mesaje?

Un domeniu fără MX poate primi totuși email pe adresa din înregistrarea A, de aceea verificăm ambele.

<?php
function domeniu_email_valid(string $email): bool
{
    $domeniu = substr(strrchr($email, "@"), 1);
    return dns_check_record($domeniu, "MX") || dns_check_record($domeniu, "A");
}

foreach (["ana@gmail.com", "ion@domeniu-inexistent.invalid"] as $email) {
    echo $email . ": " . (domeniu_email_valid($email) ? "valid" : "invalid") . "\n";
}

Rezultat posibil (depinde de DNS)

ana@gmail.com: valid
ion@domeniu-inexistent.invalid: invalid

Greșeli frecvente

  • Consideri că un domeniu cu MX dovedește că adresa există. Verificarea arată doar că domeniul primește email, nu că există căsuța ana@.... Trimite un email de confirmare.
  • Dai adresa întreagă (ana@gmail.com) în loc de domeniu. Răspunsul este false.

Comenzi înrudite

  • dns_get_mx: Află serverele de email (înregistrările MX) ale unui domeniu și prioritățile lor.
  • dns_get_record: Citește înregistrările DNS ale unui domeniu: A, AAAA, MX, TXT, NS, CNAME și altele.
  • filter_var: Validează sau curăță o valoare: email, număr întreg, URL, adresă IP, valoare booleană.