(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 requête, utilisez l'une des constantes
DNS_*.
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ées).
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
)
)