Forum und email

dns_get_record

(PHP 5)

dns_get_record — Recuperar Registros de Recursos DNS asociados con un nombre de servidor huésped

Descripción

array dns_get_record ( string $nombre_host [, int $tipo [, array &$authns ]], array &$addtl )

Recuperar Registros de Recursos DNS asociados con el nombre_host dado.

Lista de parámetros

nombre_host

nombre_host debe ser un nombre de servidor huésped DNS válido, como "www.example.com". Pueden generarse consultas revertidas usando la notación in-addr.arpa, pero gethostbyaddr() es más apropiada para la mayoría de consultas revertidas.

Note: Debido a estándares DNS, las direcciones de correo electrónico son dadas en formato usuario.host (por ejemplo: hostmaster.example.com en lugar de [email protected]), asegúrese de chequear este valor y modificarlo si es necesario antes de usarlo con funciones como mail().

tipo

Por omisión, dns_get_record() buscará por cualquier registro de recurso asociado con nombre_host . Para limitar la consulta, especifique el parámetro opcional tipo . Su valor puede ser cualquiera de los siguientes: 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 o DNS_ANY. El valor predeterminado es DNS_ANY.

Note: Debido a excentricidades en el rendimiento de libresolv entre plataformas, DNS_ANY no siempre devolverá todos los registros, la alternativa más lenta DNS_ALL recolectará todos los registros de forma más confiable.

authns

Pasado por referencia y, si es definido, será poblado con Registros de Recursos para los Servidores de Nombre Oficiales.

addtl

Pasado por referencia y, si es definido, será poblado con Registros Adicionales.

Valores retornados

Esta función devuelve una matriz de matrices asociativas. Cada matriz asociativa contiene por lo menos las siguientes claves:

Atributos DNS básicos
Atributo Significado
host El registro en el espacio de nombres DNS al que hacen referencia el resto de datos asociados.
class dns_get_record() devuelve únicamente registros de clase Internet y como tal, este parámetro siempre devolverá IN.
type Cadena que contiene el tipo de registro. Otros atributos adicionales serán contenidos también en la matriz resultante dependiendo del valor de type. Vea la tabla más adelante.
ttl Valor Time To Live restante para este registro. Este no será igual al ttl original del registro, sino que será igual al ttl original menos cualquiera que haya sido la longitud de tiempo transcurrido desde que el servidor de nombres oficial fuera consultado.

Otras claves en las matrices asociativas, dependientes de 'type'
Tipo Columnas Extra
A ip: Una dirección IPv4 en notación decimal con puntos.
MX pri: Prioridad del gestor de correo. Números más bajos indican mayor prioridad. target: FQDN del gestor de correo. Vea también dns_get_mx().
CNAME target: FQDN de la ubicación en el espacio de nombres DNS de la cual es alias el registro.
NS target: FQDN del servidor de nombres que es la autoridad para este nombre de host.
PTR target: Ubicación dentro del espacio de nombres DNS a la que apunta este registro.
TXT txt: Cadena de datos arbitraria asociada con este registro.
HINFO cpu: Número IANA que indica el CPU de la máquina referenciada por este registro. os: Número IANA que indica el Sistema Operativo en la máquina referenciada por este registro. Vea los » Nombres de Sistemas Operativos de IANA para consultar el significado de estos valores.
SOA mname: FQDN de la máquina desde donde se originaron los registros de recurso. rname: Dirección de correo electrónico del contacto administrativo para este dominio. serial: # serial de esta revisión del dominio solicitado. refresh: Intervalo de actualización (segundos) que deben usar los servidores de nombre secundarios cuando actualicen las copias remotas de este dominio. retry: Periodo de tiempo (segundos) para esperar después de una actualización fallida antes de hacer un segundo intento. expire: Periodo máximo de tiempo (segundos) que un servidor DNS secundario debe conservar copias remotas de los datos de zona sin una actualización exitosa antes de descartarlos. minimum-ttl: Periodo mínimo de tiempo (segundos) en el que un cliente puede continuar usando una resolución DNS antes de que deba solicitar una nueva resolución del servidor. Puede ser sobrescrito por registros de recurso individuales.
AAAA ipv6: Dirección IPv6
A6(PHP >= 5.1.0) masklen: Longitud (en bits) para heredar del destino especificado por chain . ipv6: Dirección para mezclar este registro específico con chain . chain: Registro padre a mezclar con los datos de ipv6 .
SRV pri: (Prioridad) las prioridades más bajas deben ser usadas primero. weight: Rangos para pesar cuál de los destinos comunmente con prioridades debe ser elegido al azar. target y port: nombre de servidor huésped y puerto en dondo puede encontrarse el servicio solicitado. Para más información, vea: » RFC 2782
NAPTR order y pref: Equivalente a pri y weight descritos anteriormente. flags, services, regex, y replacement: Parámetros, como se definen por » RFC 2915.

Ejemplos

Example#1 Uso de dns_get_record()

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

El resultado del ejemplo seria algo similar a:

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
        )

)

Example#2 Uso de dns_get_record() y DNS_ANY

Ya que es muy común desear la dirección IP de un servidor de correo una vez el registro MX ha sido resuelto, dns_get_record() también devuelve una matriz en addtl la cual contiene registros asociados. authns es devuelto también, conteniendo una lista de servidores de nombre oficiales.

<?php

/* Solicitar "cualquier" registro para php.net, y crear las matrices
   $authns y $addtl conteniendo una lista de servidores de nombre y
   cualquier registro adicional que vaya con ellos */

$resultado dns_get_record("php.net"DNS_ANY$authns$addtl);
echo 
"Resultado = ";
print_r($resultado);
echo 
"Auth NS = ";
print_r($authns);
echo 
"Adicional = ";
print_r($addtl);
?>

El resultado del ejemplo seria algo similar a:

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: Esta función no está implementada en plataformas Windows, ni funciona (actualmente) en systemas *BSD (incluyendo Mac). Pruebe con la clase » PEAR » Net_DNS.