dns_get_record
(PHP 5, PHP 7, PHP 8)
dns_get_record — Busca registros de recursos DNS associados a um nome de host
Descrição
string
$hostname
,int
$type
= DNS_ANY
,array
&$authoritative_name_servers
= null
,array
&$additional_records
= null
,bool
$raw
= false
): array|false
Busca registros de recursos DNS associados ao nome do host informado
no parâmetro hostname
.
Parâmetros
hostname
-
hostname
deve ser um nome de host DNS válido, como "www.example.com
". Pesquisas reversas podem ser geradas usando a notaçãoin-addr.arpa
, mas gethostbyaddr() é mais adequada para a maioria das pesquisas reversas.Note:
De acordo com os padrões DNS, os endereços de e-mail são fornecidos no formato
user.host
(por exemplo:hostmaster.example.com
em oposição a[email protected]
). Certifique-se de verificar este valor e modificá-lo se necessário antes de usá-lo com funções como mail(). type
-
Por padrão, dns_get_record() procurará quaisquer registros de recursos associados ao
hostname
. Para limitar a consulta, especifique o parâmetro opcionaltype
. Pode ser qualquer uma das seguintes constantes:DNS_A
,DNS_CNAME
,DNS_HINFO
,DNS_CAA
,DNS_MX
,DNS_NS
,DNS_PTR
,DNS_SOA
,DNS_TXT
,DNS_AAAA
,DNS_SRV
,DNS_NAPTR
,DNS_A6
,DNS_ALL
ouDNS_ANY
.Note:
Devido às excentricidades no desempenho do libresolv entre plataformas,
DNS_ANY
nem sempre retornará todos os registros, oDNS_ALL
mais lento coletará todos os registros de forma mais confiável.Note:
Windows:
DNS_CAA
não é suportado. O suporte paraDNS_A6
não está implementado. authoritative_name_servers
-
Passado por referência e, se fornecido, será preenchido com Registros de Recursos para os Servidores de Nomes Autoritativos.
additional_records
-
Passado por referência e, se fornecido, será preenchido com quaisquer Registros Adicionais.
raw
-
O parâmetro
type
será interpretado como um ID de tipo DNS bruto (as constantesDNS_*
não podem ser usadas). O valor de retorno conterá uma chavedata
, que precisa ser analisada manualmente.
Valor Retornado
Esta função retorna um array de arrays associativos,
ou false
em caso de falha. Cada array associativo contém,
no mínimo, as seguintes chaves:
Atributo | Significado |
---|---|
host | O registro no namespace DNS ao qual o restante dos dados associados se refere. |
class |
dns_get_record() retorna apenas registros de classes da Internet e
como tal este parâmetro sempre retornará IN .
|
type | String contendo o tipo de registro. Atributos adicionais também estarão contidos no array resultante, dependendo do valor do tipo. Veja a tabela abaixo. |
ttl |
"Time To Live" (tempo de vida) restante para este registro. Isto não será
igual ao TTL original do registro, mas será igual ao TTL original menos qualquer
período de tempo decorrido desde que o servidor de nomes autoritativo foi consultado.
|
Tipo | Colunas Extras |
---|---|
A |
ip : Endereços IPv4 em notação decimal com pontos.
|
MX |
pri : Prioridade do trocador de mensagens.
Números mais baixos indicam maior prioridade.
target : FQDN do trocador de correio.
Consulte também dns_get_mx().
|
CNAME |
target : FQDN do local no namespace DNS ao qual
o registro tem alias.
|
NS |
target : FQDN do servidor de nomes que tem autoridade
para este nome de host.
|
PTR |
target : Local no namespace DNS para o qual
esse registro aponta.
|
TXT |
txt :Dados de string arbitrários associados a este registro.
|
HINFO |
cpu : Número IANA que designa a CPU da máquina
referenciada por este registro.
os : Número IANA que designa o sistema operacional
na máquina referenciada por este registro.
Consulte os » Operating System
Names da IANA (Nomes de Sistemas Operacionais)
para o significado desses valores.
|
CAA |
flags : Um campo de bits de um byte; atualmente apenas o bit 0 está definido,
significando 'crítico'; outros bits são reservados e devem ser ignorados.
tag : O nome da tag CAA (sequência alfanumérica ASCII).
value : O valor da tag CAA (string binária, pode usar subformatos).
Para obter informações adicionais, consulte: » RFC 6844
|
SOA |
mname : FQDN da máquina da qual os registros de
recursos foram originados.
rname : Endereço de e-mail do contato administrativo
deste domínio.
serial : Número de série desta revisão do domínio
solicitado.
refresh : Intervalo de atualização (segundos) que os servidores
de nomes secundários devem usar ao atualizar cópias remotas deste domínio.
retry : Tempo (segundos) de espera após uma
atualização com falha antes de fazer uma segunda tentativa.
expire : Período máximo de tempo (segundos) que um servidor DNS secundário
deve reter cópias remotas dos dados da zona sem uma
atualização bem-sucedida antes de descartar.
minimum-ttl : Período mínimo de tempo (segundos)
que um cliente pode continuar a usar uma resolução DNS antes de solicitar
uma nova resolução do servidor. Pode ser substituído por registros
de recursos individuais.
|
AAAA |
ipv6 : Endereço IPv6
|
A6 |
masklen : Comprimento (em bits) a ser herdado do destino
especificado por chain .
ipv6 : Endereço para este registro específico ser
mesclado com chain .
chain : Registro pai para mesclar com
dados ipv6 .
|
SRV |
pri : (Prioridade) as prioridades mais baixas devem ser usadas primeiro.
weight : Classificação para ponderar quais dos targets
comumente priorizados devem ser escolhidos aleatoriamente.
target e port : nome do host e porta onde o serviço
solicitado pode ser encontrado.
Para obter informações adicionais, consulte: » RFC 2782.
|
NAPTR |
order e pref : Equivalente a
pri e weight acima.
flags , services , regex
e replacement : Parâmetros como definidos pela
» RFC 2915.
|
Registro de Alterações
Versão | Descrição |
---|---|
7.0.16, 7.1.2 | Adicionado suporte para tipo de registro CAA. |
Exemplos
Example #1 Usando dns_get_record()
<?php
$result = dns_get_record("php.net");
print_r($result);
?>
O exemplo acima produzirá algo semelhante 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 Usando dns_get_record() e DNS_ANY
Como é muito comum pesquisar o endereço IP de um servidor de e-mail
depois que o registro MX tenha sido resolvido, dns_get_record()
também retorna um array em additional_records
que
contém registros associados. authoritative_name_servers
também é retornado contendo uma lista de servidores de nomes
autoritativos.
<?php
/* Solicita o registro "ANY" para php.net
e cria arrays $authns e $addtl
contendo uma lista de servidores de nomes e
quaisquer registros adicionais que os
acompanham */
$result = dns_get_record("php.net", DNS_ANY, $authns, $addtl);
echo "Resultado = ";
print_r($result);
echo "Servidor de Nomes Autoritativo = ";
print_r($authns);
echo "Adicional = ";
print_r($addtl);
?>
O exemplo acima produzirá algo semelhante a:
Resultado = 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 ) ) Servidor de Nomes Autoritativo = 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 ) ) Adicional = 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 ) )