7.67 Réseau
7 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
|
7.67.14 dns_get_record()
Lit les données DNS associées à un hôte
[ Exemples avec dns_get_record ] PHP 5 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. Utilisez alors la classe
PEAR Net_DNS .
|
dns_get_record retourne un tabluau associatif, contenant
au minimum
les index suivants :
host
,
type
,
class
,
ttl
.
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 disponbiles 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.
|
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.
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
.
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 sur 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.
|
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
: Interval 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 seconde) d'attente après un rafraîchissement
échoué, avant de faire une seconde tentative.
expire
: Durée maximale (en seconde) de conservation
d'une copie des données de zone sans pouvoir faire de rafraichissement.
minimum-ttl
: Durée minimale (en seconde) pour 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
|
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.
|
Note |
En terme de standards DNS, les adresses email sont données au format
utilisateur.hote (par exemple : webmestre.exemple.com au contraire du
format webmestre@exemple.com). N'oubliez pas de vérifier cette adresse
et de la modifier si nécessaire avant de la passer à la fonction
mail
.
|
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 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é.
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
|