dns_get_mx
<<<
dns_get_record fsockopen
>>>

6.66 Réseau
6 Index des fonctions
 Manuel PHP

Introduction
Pré-requis
Installation
Configuration à l'exécution
Types de ressources
Constantes Prédefinies
checkdnsrr
closelog
debugger_off
debugger_on
define_syslog_variables
dns_check_record
dns_get_mx
->dns_get_record
fsockopen
gethostbyaddr
gethostbyname
gethostbynamel
getmxrr
getprotobyname
getprotobynumber
getservbyname
getservbyport
ip2long
long2ip
openlog
pfsockopen
socket_get_status
socket_set_blocking
socket_set_timeout
syslog

6.66.14 dns_get_record() Lit les données DNS associées à un hôte

[ Exemples avec dns_get_record ]   PHP 4 CVS only

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.

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

La clé class contiendra toujours IN , indiquant une ressource de type IPv4.

Note

ttl contiend le TTL (Time To Live, durée de vie) restant depuis la dernière requête au serveur DNS principal.

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 .

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.

Les enregistrements SOA sont les types les plus gourmands en mémoire. mname contient le nom de la machine qui a émit les enregistrements de ressources. rname est l'adresse email du contact administratif pour cette zone. serial , refresh , retry , expire et minimum-ttl sont les valeurs qu'on peut attendre d'une zone SOA.
Note

En vertue des standards DNS, l'adresse email ci-dessus est au format utilisateur.hôte (par exemple, hote.exemple.com par opposition à hostmaster@example.com). Assurez vous de bien vérifier cette valeur et de la modifier si nécessaire avant de l'utiliser avec la fonction mail .

Un enregistrement A contiendra un index ip , avec l'adresse IPv4.

Les champs MX contiendront une clé pri indiquant la priorité (la préférence). Elle disposera aussi d'un index target qui listera le FQDN de l'échangeur de mail. Voyez aussi dns_get_mx .

Les enregistrements CNAME, NS, et PTR contiendront chacun un index target qui représentera la localisation particulière dans l'espace de nom DNS.

Les champs TXT auront un index txt contenant le texte associé à l'enregistrement de nom

Les enregistrements HINFO disposeront de deux index : cpu et os qui décriront l'environnement de l'hôte spécifié. Les valeurs sont données sous forme d'entiers. Voyez la RFC 1010 pour connaître la signification de ces valeurs.

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 champs 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 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

<< dns_get_record >>
dns_get_mx Réseau fsockopen