dns_get_record
(PHP 5)
dns_get_record — Lit les données DNS associées à un hôte
Description
$hostname
[, int $type = DNS_ANY
[, array &$authns
[, array &$addtl
[, bool &$raw = false
]]]] )
Lit les données DNS associées à l'hôte
hostname.
Liste de paramètres
-
hostname -
hostnamedoit ê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 format webmestre@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 optionneltypepeut prendre l'une des valeurs constantes suivantes :DNS_A,DNS_CNAME,DNS_HINFO,DNS_MX,DNS_NS,DNS_PTR,DNS_SOA,DNS_TXT,DNS_AAAA,DNS_SRV,DNS_NAPTR,DNS_A6,DNS_ALLouDNS_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. -
authns -
Passé par référence, et, s'il est fourni, recevra les enregistrements de ressources pour les Authoritative Name Servers.
-
addtl -
Passé par référence, et, s'il est fourni, recevra tous les enregistrements supplémentaires.
-
raw -
Dans le cas du mode brut, nous requêtons uniquement le type demandé au lieu de parcourir tous les types avant d'accéder à celui demandé.
Valeurs de retour
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 |
| 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 : 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(PHP >= 5.1.0) |
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.
|
Historique
| Version | Description |
|---|---|
| 5.4.0 |
Ajout du paramètre raw.
|
| 5.3.0 | Cette fonction est maintenant disponible sous Windows. |
| 5.3.0 |
Avant cette version, si le paramètre authns
est passé, le paramètre addtl était également
nécessaire.
|
Exemples
Exemple #1 Exemple avec dns_get_record()
<?php $result = dns_get_record("php.net"); print_r($result); ?>
<?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);
?>L'exemple ci-dessus va afficher quelque chose de 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
)
)
