(PHP 4, PHP 5, PHP 7, PHP 8)
checkdnsrr — Проверяет DNS-записи, которые соответствуют имени узла в Интернете или IP-адресу
Функция ищет записи DNS с типом type,
которые соответствуют узлу hostname.
hostname
Параметр hostname — IP-адрес
в виде четырёх разделённых точками десятичных чисел или имя узла.
type
Параметр type принимает следующие записи: A, MX, NS, SOA,
PTR, CNAME, AAAA, A6, SRV, NAPTR, TXT или ANY.
Функция возвращает true , если нашла записи; возвращает false , если не смогла
найти записи или произошла ошибка.
Замечание:
Для совместимости с более ранними версиями PHP под ОС Windows, в которых отсутствовала реализация этой функции, попробуйте класс » Net_DNS из репозитория » PEAR.
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 trueImportant 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" existsI 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.