Manuel PHP
Précédent |  | Suivant

# dns_get_record

(PHP 5)

dns_get_record -- Lit les données DNS associées à un hôte

## Description

array dns_get_record ( string hostname [, int type [, array &authns, array &addtl]])

> Note : `dns_get_record` n'est pas implémentée sur les plate-formes Windows. Utilisez la classe PEAR Net_DNS.

`dns_get_record` retourne un tabluau associatif, contenant au minimum les index suivants : `host`, `type`, `class`, `ttl`.

Tableau 1. Attributs de base DNS

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ère 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.

`hostname` doit être un nom d'hôte DNS valide, comme par exemple `www.exemple.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.

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_MX`, `DNS_NS`, `DNS_PTR`, `DNS_SOA`, `DNS_TXT`, `DNS_ALL` et `DNS_ANY`. Par défaut, il vaut DNS_ANY.

> Note : A cause des performances excentriques de la librairie libresolv, suivant les plate-formes, `DNS_ANY` ne retournera pas toujours tous les enregistrements, et l'option `DNS_ALL`, bien que plus lente, le fera de manière plus sûre.

Les paramètres optionnels `authns` et `addtl` sont passé par référence, et si fournis, ils recevront les enregistrements de ressources pour les Authoritative Name Servers, et tous les Additional Records respectivement. Voir l'exemple ci-dessous.

Suivant le type de valeur de l'index `type`, le tableau associatif peut aussi contenir les index suivants : `ip`, `pri`, `target`, `cpu`, `os`, `mname`, `rname`, `serial`, `refresh`, `retry`, `expire`, `minimum-ttl`, `txt`.

Tableau 2. Autres index disponibles suivant le type DNS

Type | Valeur supplémentaire
--- | ---
`A` | `ip`: Une adresse IP v4, 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 sur 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 Names pour connaître la signification de ces valeurs.

`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`: Interval 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 seconde) d'attente après un rafraîchissement échoué, avant de faire une seconde tentative. `expire`: Durée maximale (en seconde) de conservation d'une copie des données de zone sans pouvoir faire de rafraichissement. `minimum-ttl`: Durée minimale (en seconde) pour 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
SRV | `pri` : (Priorité) les priorités les plus basses doivent être utilisées en premier. `weight` : classement pour choisir aléatoirement parmi les serveurs `targets`. `target` et `port` : nom d'hôte et port où le service est disponible. Pour plus d'informations, voir : RFC 2782
NAPTR | `order` et `pref` : équivalent à `pri` et `weight` ci-dessus. `flags`, `services`, `regex`, et `replacement` : paramètres tels que définis dans la RFC 2915.

> Note : En terme de standards DNS, les adresses email sont données au format utilisateur.hote (par exemple : webmestre.exemple.com au contraire du format webmestre@exemple.com). N'oubliez pas de vérifier cette adresse et de la modifier si nécessaire avant de la passer à la fonction mail().

Exemple 1. Exemple avec dns_get_record()

`<?php $result = dns_get_record("php.net"); print_r($result); ?> /* Produit un affichage similaire à ceci : ---------------------------------------- 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 ) ) */`

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 `addtl` qui contiendra les enregistrements associés. `authns` est aussi retourné en contenant une liste des serveurs autorité.

Exemple 2. Exemple avec dns_get_record() et DNS_ANY

`<?php
/* Demande tous ("ANY") les enregistrements pour php.net,
pu 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);
print "Résultat = ";
print_r($result);
print "Authorité NS = ";
print_r($authns);
print "Additionnel = ";
print_r($addtl);
?>
/*
Produit un affichage similaire à ceci :
-----------------------------------------
Résultat = 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
)
)
Authortité 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
)
)
Additionnel = 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
)
)
*/`

Voir aussi dns_get_mx() et dns_check_record()

Précédent | Sommaire | Suivant
dns_get_mx | Niveau supérieur | fsockopen