PHP 8.4.2 Released!

checkdnsrr

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

checkdnsrr Prüft DNS-Einträge auf Übereinstimmung mit einem gegebenen Internet-Hostnamen oder einer IP-Adresse

Beschreibung

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

Durchsucht den DNS (Domain-Name-Service) nach Einträgen des Typs type, die zum übergebenen hostname gehören.

Parameter-Liste

hostname

hostname kann entweder eine durch Punkte getrennte IP-Adresse oder der Hostname sein.

type

type kann einer der folgenden Werte sein: A, MX, NS, SOA, PTR, CNAME, AAAA, A6, SRV, NAPTR, TXT oder ANY.

Rückgabewerte

Gibt true zurück, wenn mindestens ein Eintrag gefunden wurde. Wurde kein Eintrag gefunden oder trat ein Fehler auf, wird false zurückgegeben.

Anmerkungen

Hinweis:

Die Funktion stand unter Windows nicht immer zur Verfügung. Verwenden Sie daher ggf. die » PEAR-Klasse » Net_DNS.

Siehe auch

  • dns_get_record() - Liefert die zu einem Hostnamen gehörenden DNS-Einträge
  • getmxrr() - Ermittelt die zu einem Internet-Hostnamen passenden MX-Records
  • gethostbyaddr() - Liefert den zur angegebenen IP-Adresse passenden Internet-Hostnamen
  • gethostbyname() - Ermittelt die zum angegebenen Internet-Hostnamen passende IPv4-Adresse
  • gethostbynamel() - Liefert eine Liste von IPv4-Adressen passend zum angegebenen Internet-Hostnamen
  • the named(8) manual page

add a note

User Contributed Notes 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