(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
/* 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 ) )