PHP Conference Nagoya 2025

checkdnsrr

(PHP 4, PHP 5, PHP 7, PHP 8)

checkdnsrrVerifica os registros DNS correspondentes para o nome do host ou endereço IP informado

Descrição

checkdnsrr(string $hostname, string $type = "MX"): bool

Pesquisa o DNS para os registros do tipo informado em type correspondentes ao nome do host definido em hostname.

Parâmetros

hostname

hostname pode ser o endereço IP em notação quádrupla separada por pontos ou o nome do host.

type

type pode ser: A, MX, NS, SOA, PTR, CNAME, AAAA, A6, SRV, NAPTR, TXT or ANY.

Valor Retornado

Retorna true se o registro for encontrado; retorna false se não forem encontrados registros ou se um erro ocorrer.

Notas

Nota:

Para compatibilidade com Windows antes desta implementação, deve ser usada a classe » Net_DNS do » PEAR.

Veja Também

  • dns_get_record() - Busca registros de recursos DNS associados a um nome de host
  • getmxrr() - Obtém registros MX correspondentes a um determinado nome de host da Internet
  • gethostbyaddr() - Obtém nome do servidor de Internet correspondente ao endereço de IP fornecido
  • gethostbyname() - Obtém o endereço IPv4 correspondente a um determinado nome de host da Internet
  • gethostbynamel() - Obtém uma lista de endereços IPv4 correspondentes a um determinado nome de host da Internet
  • a página named(8) do manual

adicione uma nota

Notas Enviadas por Usuários (em inglês) 3 notes

up
34
Krisztin Ferenczi
11 years ago
criffoh at gmail dot com is right. Before you check domain, you must convert to ascii with idn_to_ascii function:
http://us2.php.net/manual/en/function.idn-to-ascii.php .

var_dump(checkdnsrr('ñandu.cl', 'A')); // returns false
var_dump(checkdnsrr(idn_to_ascii('ñandu.cl'), 'A')); // return true
up
16
Martin
8 years ago
Important Warning:

You need to add a dot to the end of the host name to make a fully qualified domain name.

To see why, try executing the following pieces of code:

$d1="gmail.con";
$d2="gmail.con.";
$r1=checkdnsrr($d1, "MX");
$r2=checkdnsrr($d2, "MX");
var_dump($r1);
var_dump($r2);

You will see that without the dot it claims that the domain "gmail.con" is valid.

Note that if you time the "checkdnsrr()" calls you will also see it takes longer without the dot because it treats it as a relative domain and does several tries based on the host name it is running on.

NB: in case you're interested, being treated as a relative domain explains what is happening. If your host is "example.com" the relative domain will eventually resolve to "gmail.con.com." which can be looked up, hence it wrongly claims "gmail.con" exists
up
1
n at zay dot uk
3 years ago
I always think you should state the blindingly obvious.
A function that contains checkdnsrr will return false without an internet connection.
So in a production environment you need an active internet connection to return a true result with a valid email address.
To Top