(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.com
au 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_ANY
ne 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_CAA
n'est pas supporté. Support pourDNS_A6
n'est pas implémenté.
authoritative_name_servers
Passé par référence, et, s'il est fourni, recevra les enregistrements de ressources pour les Authoritative Name Servers.
additional_records
Passé 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 Names pour 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 par chain . ipv6 : adresse pour que cet enregistrement spécifique fusionne avec chain . chain : l'enregistrement parent à fusionner avec les données 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. |
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
$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 ) )