dns_get_mx
fsockopen
Network Functions
PHP Manual

# 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 hostmaster@example.com), 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.

### Ver también

- dns_get_mx() - Alias of getmxrr
- dns_check_record() - Alias of checkdnsrr

dns_get_mx
fsockopen
Network Functions
PHP Manual