(PHP 5, PHP 7, PHP 8)
dns_get_record — Lit les données DNS associées à un hôte
$hostname,$type = DNS_ANY,&$authoritative_name_servers = null,&$additional_records = null,$raw = false
   Lit les données DNS associées à l'hôte
   hostname.
  
hostname
       hostname doit être un nom d'hôte DNS valide, comme
       www.example.com. Des résolutions inversées peuvent
       être faites avec la notation in-addr.arpa, mais la fonction 
       gethostbyaddr() est plus efficace pour faire des
       résolutions inverses.
      
Note:
En terme de standards DNS, les adresses email sont données au format
utilisateur.hote(par exemple :webmestre.example.comau contraire du formatwebmestre@example.com). N'oubliez pas de vérifier cette adresse et de la modifier si nécessaire avant de la passer à la fonction mail().
type
       Par défaut, dns_get_record() va rechercher toutes les
       ressources associées à hostname. Pour limiter la
       taille de la requête, le paramètre optionnel type
       peut prendre l'une des valeurs constantes suivantes :
       DNS_A, DNS_CNAME,
       DNS_HINFO, DNS_CAA,
       DNS_MX, DNS_NS,
       DNS_PTR, DNS_SOA,
       DNS_TXT, DNS_AAAA,
       DNS_SRV, DNS_NAPTR,
       DNS_A6, DNS_ALL
       ou DNS_ANY.
      
Note:
À cause des performances excentriques de la bibliothèque libresolv, suivant les plates-formes,
DNS_ANYne retournera pas toujours tous les enregistrements, et l'optionDNS_ALL, bien que plus lente, le fera de manière plus sûre.
Note:
Windows :
DNS_CAAn'est pas supporté. Support pourDNS_A6n'est pas implémenté.
authoritative_name_serversPassé par référence, et, s'il est fourni, recevra les enregistrements de ressources pour les Authoritative Name Servers.
additional_recordsPassé par référence, et, s'il est fourni, recevra tous les enregistrements supplémentaires.
raw
       Le type sera interprété comme un ID de type DNS brut
       (les constantes DNS_* ne peuvent pas être utilisé).
       La valeur de retour contiendra une clé data,
       qui doit être manuellement analysé.
      
   dns_get_record() retourne un tableau de tableaux
   associatifs,  ou false si une erreur survient.
   Chaque tableau contient au minimum les index suivants :
   
| Attribut | Signification | 
|---|---|
| host | L'enregistrement de l'espace de nom DNS qui est décrit par les autres données. | 
| class | dns_get_record() ne retourne que la classe d'enregistrement
        Internet et, en tant que tel, cet index vaudra toujours IN. | 
| type | Chaîne de caractères contenant le type d'enregistrement. Des attributs supplémentaires seront aussi disponibles dans le tableau suivant la valeur de ce type. Reportez-vous à la table ci-dessous. | 
| ttl | "Time To Live": durée avant expiration de l'enregistrement. 
        Cette valeur est différente de la durée avant expiration originale,
        mais plutôt cette valeur moins la durée depuis la dernière interrogation
        du serveur DNS responsable. | 
| Type | Valeur supplémentaire | 
|---|---|
| A | ip: une adresse IPv4, au format numérique. | 
| MX | pri: priorité du serveur de mail.
        Les nombres faibles indiquent une priorité importante.target: FQDN du serveur de mail.
        Voir aussi dns_get_mx(). | 
| CNAME | target: FQDN du nom de l'espace DNS qui sert
        d'alias à cet enregistrement. | 
| NS | target: FQDN du nom de serveur qui est responsable
        de ce nom de domaine. | 
| PTR | target: nom de domaine vers lequel cet enregistrement pointe. | 
| TXT | txt: chaîne de caractères arbitrairement associée
        à cet enregistrement. | 
| HINFO | cpu: numéro IANA désignant le processeur de la machine
        référencée par cet enregistrement.os: numéro IANA désignant le système d'exploitation
        de la machine référencée par cet enregistrement.
        Voir »Operating System Namespour connaître la signification de ces valeurs. | 
| CAA | flags: Un champ-bit d'un octet : actuellement seul le bit 0 est définit,
        signifiant 'critical' (critique) ; les autres bits sont réservés et devrait être ignoré.tag: Le nom du tag CAA (chaîne alphanumérique ASCII).value: La valeur du tag CAA (chaîne binaire, peut utiliser des sous-formats).
        Pour plus d'informations voir : » RFC 6844 | 
| SOA | mname: FQDN de la source de cet enregistrement.rname: adresse email du contact administratif de
        ce domaine.serial: numéro de série du nom de domaine.refresh: intervalle de rafraîchissement (en secondes)
        que les serveurs de noms secondaires doivent utiliser pour mettre
        en cache ce nom de domaine.retry: durée (en secondes) d'attente après un rafraîchissement
        échoué, avant de faire une seconde tentative.expire: durée maximale (en secondes) de conservation
        d'une copie des données de zone sans pouvoir faire de rafraîchissement.minimum-ttl: durée minimale (en secondes) pendant laquelle un
        client conserve des données de zone avant qu'il ne soumette une nouvelle
        requête. Cette configuration peut être annulée par d'autres enregistrements. | 
| AAAA | ipv6: adresse IPv6 | 
| A6 | masklen: longueur (en octets) à hériter depuis
        la cible spécifiée parchain.ipv6: adresse pour que cet enregistrement spécifique fusionne
        avecchain.chain: l'enregistrement parent à fusionner avec les donnéesipv6. | 
| SRV | pri: (priorité) les priorités les plus basses doivent
        être utilisées en premier.weight: classement pour choisir aléatoirement parmi les
        serveurstargets.targetetport: nom d'hôte et
        port où le service est disponible.
        Pour plus d'informations, voir : » RFC 2782 | 
| NAPTR | orderetpref: équivalent àprietweightci-dessus.flags,services,regex,
        etreplacement: paramètres tels que définis
        dans la » RFC 2915. | 
| Version | Description | 
|---|---|
| 7.0.16, 7.1.2 | Ajout du support pour les enregistrements de type CAA. | 
Exemple #1 Exemple avec dns_get_record()
<?php
$result = dns_get_record("php.net");
print_r($result);
?>
Résultat de l'exemple ci-dessus est similaire à :
Array
(
    [0] => Array
        (
            [host] => php.net
            [type] => MX
            [pri] => 5
            [target] => pair2.php.net
            [class] => IN
            [ttl] => 6765
        )
    [1] => Array
        (
            [host] => php.net
            [type] => A
            [ip] => 64.246.30.37
            [class] => IN
            [ttl] => 8125
        )
)
Exemple #2 Exemple avec dns_get_record() et DNS_ANY
     Comme il est très courant de rechercher l'IP d'un serveur,
     une fois que le champ MX a été résolu, dns_get_record()
     retournera aussi un tableau dans le paramètre additional_records
     qui contiendra les enregistrements associés. authoritative_name_servers
     est aussi retourné en contenant une liste des serveurs autorité.
    
<?php
/* Demande tous ("ANY") les enregistrements pour php.net, 
   puis crée les tableaus $authns et $addtl
   contenant une liste des noms de serveurs, et tous
   les enregistrements qui vont avec
   */
$result = dns_get_record("php.net", DNS_ANY, $authns, $addtl);
echo "Result = ";
print_r($result);
echo "Auth NS = ";
print_r($authns);
echo "Additional = ";
print_r($addtl);
?>
Résultat de l'exemple ci-dessus est similaire à :
Result = Array
(
    [0] => Array
        (
            [host] => php.net
            [type] => MX
            [pri] => 5
            [target] => pair2.php.net
            [class] => IN
            [ttl] => 6765
        )
    [1] => Array
        (
            [host] => php.net
            [type] => A
            [ip] => 64.246.30.37
            [class] => IN
            [ttl] => 8125
        )
)
Auth NS = Array
(
    [0] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => remote1.easydns.com
            [class] => IN
            [ttl] => 10722
        )
    [1] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => remote2.easydns.com
            [class] => IN
            [ttl] => 10722
        )
    [2] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => ns1.easydns.com
            [class] => IN
            [ttl] => 10722
        )
    [3] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => ns2.easydns.com
            [class] => IN
            [ttl] => 10722
        )
)
Additional = Array
(
    [0] => Array
        (
            [host] => pair2.php.net
            [type] => A
            [ip] => 216.92.131.5
            [class] => IN
            [ttl] => 6766
        )
    [1] => Array
        (
            [host] => remote1.easydns.com
            [type] => A
            [ip] => 64.39.29.212
            [class] => IN
            [ttl] => 100384
        )
    [2] => Array
        (
            [host] => remote2.easydns.com
            [type] => A
            [ip] => 212.100.224.80
            [class] => IN
            [ttl] => 81241
        )
    [3] => Array
        (
            [host] => ns1.easydns.com
            [type] => A
            [ip] => 216.220.40.243
            [class] => IN
            [ttl] => 81241
        )
    [4] => Array
        (
            [host] => ns2.easydns.com
            [type] => A
            [ip] => 216.220.40.244
            [class] => IN
            [ttl] => 81241
        )
)