(PHP 5)
dns_get_record — Recuperar Registros de Recursos DNS asociados con un nombre de servidor huésped
Recuperar Registros de Recursos DNS asociados con el nombre_host dado.
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().
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.
Pasado por referencia y, si es definido, será poblado con Registros de Recursos para los Servidores de Nombre Oficiales.
Pasado por referencia y, si es definido, será poblado con Registros Adicionales.
Esta función devuelve una matriz de matrices asociativas. Cada matriz asociativa contiene por lo menos las siguientes claves:
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. |
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. |
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 ) )