PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

fsockopen> <dns_get_mx
Last updated: Fri, 20 Jun 2008

view this page in

dns_get_record

(PHP 5)

dns_get_record — Lit les données DNS associées à un hôte

Description

array dns_get_record ( string $hostname [, int $type ] )
array dns_get_record ( string $hostname , int $type , array &$authns , array &$addtl )

Lit les données DNS associées à l'hôte hostname .

Liste de paramètres

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 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 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_AAAA, DNS_SRV, DNS_NAPTR, DNS_A6, DNS_ALL ou DNS_ANY. Par défaut, il vaut 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'option DNS_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.

Valeurs de retour

dns_get_record retourne un tableau associatif, contenant au minimum les index suivants :

Attributs de base DNS
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ère 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.

Autres index disponibles suivant le type DNS
Type Valeur supplémentaire
A ip: une adresse IP v4, 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.

Exemples

Exemple #1 Exemple avec dns_get_record()

<?php
$result 
dns_get_record("php.net");
print_r($result);
?>

L'exemple ci-dessus va afficher quelque chose de 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 addtl qui contiendra les enregistrements associés. authns 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);
?>

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
        )

)

Notes

Note: Cette fonction n'est pas implémentée sur les plates-formes Windows ni sur les systèmes *BSD (incluant Mac). Utilisez la classe » PEAR » Net_DNS.



fsockopen> <dns_get_mx
Last updated: Fri, 20 Jun 2008
 
add a note add a note User Contributed Notes
dns_get_record
nick at carbidefinger dot net
22-Jun-2008 05:19
Its worth nothing that this function returns nothing if the server you are running it from is authoritative for the domain you are checking (common on shared hosting platforms) when looking up 'NS' records

In this instance $authns is an array containing no keys or values:
dns_get_record("alocaldomain.com","NS",$authns,$addtl);
marcus at synchromedia dot co dot uk
02-Feb-2006 01:02
The docs say "nor does it (currently) work on *BSD systems". Unfortunately this includes MacOS X. It's just not there in my build of 5.1.2 running on 10.4.4.
ed at noxserver dot com
24-Mar-2005 02:44
I recently needed to do some name server and IP discovery on the fly.
Server and domain monitoring system.  If you've got a system with dig
the below seems to work fine for discovering name server and a
addresses.  Shouldn't be hard for you to modify it for the other records if
needed.

$_REQUEST[url] = "http://www.example.com/";

$url_parts = parse_url($_REQUEST[url]);

$dns = Dig($url_parts[host]);
print_r($dns[name_servers]);
print_r($dns[ips]);

function Dig ($domain) {
    $dig = `dig $domain`;
    preg_match_all("/in\s+ns\s+(.+?)\s+/is"
,$dig,$name_servers,PREG_PATTERN_ORDER);
    preg_match_all("/$domain.\s+[0-9]+\s+in\s+a\s+([0-9.]+)\s+/is"
,$dig,$ips,PREG_PATTERN_ORDER);
    $dns[name_servers] = $name_servers[1];
    $dns[ips] = $ips[1];
    return($dns);
}
axelm-php at nona dot net
17-May-2003 02:06
I've done a backport of the function to PHP4.
It is available as extension at:

http://nona.net/software/dns_get_record/

comments & feedback appreciated.

--
Alexander Mayrhofer
axelm-php@nona.net

fsockopen> <dns_get_mx
Last updated: Fri, 20 Jun 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites