(PHP 5, PHP 7)
dns_get_record — Den DNS Resource Record für einen gegebenen Hostname finden.
$hostname
[, int $type
= DNS_ANY
[, array &$authns
[, array &$addtl
[, bool $raw
= FALSE
]]]] ) : array
Fragt einen Resource Record für den übergebenen
hostname
ab.
hostname
hostname
sollte ein valider Hostname wie z.B.
"www.example.com
". sein. Reverse lookups sind mit der
in-addr.arpa
möglich, jedoch
sollte für diesen Fall gethostbyaddr() genutzt werden.
Hinweis:
Gemäß dem DNS-Standard werden E-Mail Adressen in der Form
user.host
(zum Beispiel:hostmaster.example.com
statthostmaster@example.com
) zurückgegeben. Darum ist es wichtig diesen Wert zu überprüfen und ihn gegebenenfalls mit Funktionen wie z.B. mail() anzupassen.
type
Standardmäßig sucht dns_get_record() nach jedem Resource Record
für den hostname
.
Um die Anfrage zu spezialisieren muss type
gegeben sein. Dieser Paramter kann einen der folgenden Werte annehmen:
DNS_A
, DNS_CAA
,
DNS_CNAME
,
DNS_HINFO
, DNS_MX
,
DNS_NS
, DNS_PTR
,
DNS_SOA
, DNS_TXT
,
DNS_AAAA
, DNS_SRV
,
DNS_NAPTR
, DNS_A6
,
DNS_ALL
or DNS_ANY
.
Hinweis:
Durch Eigenheiten in der Performance von libresolv auf verschiedenen Plattformen kann es passieren, dass
DNS_ANY
nicht alle Records zurückgibt.DNS_ALL
, auch wenn es langsamer ist, arbeite für diesen Fall zuverlässiger.Hinweis:
DNS_CAA
wird unter Windows nicht unterstützt.
authns
Passed by reference. Wird, wenn es übergeben wird, mit den Records für die Autoritativen Nameserver gefüllt.
addtl
Passed by reference. Wird, wenn es übergeben, mit zusätzlichen Records gefüllt.
raw
Der Parameter type
wird als unverarbeitete DNS Typ-ID interpretiert
(die DNS_*
Konstanten können nicht verwendet werden).
Der Rückgabewert enthält einen data
-Schlüssel, der manuell
geparst werden muss.
Diese Funktion gibt ein Array an assioziativen Arrays zurück
Im Fehlerfall wird FALSE
zurückgegeben.. Jedes Assoziative Array enthält
mindestens die folgenden Keys:
Attribut | Bedeutung |
---|---|
host | Der Host im DNS Namespace auf den sich die restlichen Werte in dem assoziativen Array beziehen.. |
class |
dns_get_record() gibt nur Internet class Records zurück wodurch dieser Paramater immer
IN zurückgibt.
|
type | String in dem der Record Typ hinterlegt ist. Zusätliche Attribute sind abhängig vom Typ ebenfalls in dem Array enthalten. Siehe untere Tabelle |
ttl |
"Time To Live" die für dieses Record noch verbleibt.
. nicht identisch mit der originalen ttl des Records sondern die originale ttl abzüglich der Zeit,
die vergangen ist seit der autorative Nameserver die Anfrage erhalten hat.
|
Type | Extra Spalte |
---|---|
A |
ip : Eine IPv4 Addresse in dotted decimal Notation.
|
MX |
pri : Priorität des MX Records. Niedriegere Zahlen bedeuten eine höhere Priorität.
target : FQDN des MX Records.
Siehe auch: dns_get_mx().
|
CNAME |
target : FQDN des Ziels auf das dieses Alias zeigt.
|
NS |
target : FQDN des Nameservers, der der autorative Nameserver für dieses Zone ist.
|
PTR |
target : Stelle im DNS namespace auf den dieser Record zeigt.
|
TXT |
txt : Beliebieger String der diesem Record zugeordnet ist.
|
HINFO |
cpu : IANA Nummer für die CPU des Hosts, der durch dieses Record referenziert wird.
os : IANA Nummer für das Betriebssystem des Hosts, der durch dieses Record referenziert wird.
Siehe IANAs » Operating System
Names für die Bedeutung dieses Records.
|
CAA |
flags : Ein Ein-Byte-Bitfeld; zurzeit ist nur Bit 0 definiert,
und bedeutet 'kritisch'; andere Bits sind reserviert und sollten ignoriert werden.
tag : Der CAA Tag-Name (alphanumerische ASCII Zeichenkette).
value : Der CAA Tag-Wert (Binärstring, der Unterformate verwenden kann).
Für weitere Information siehe » RFC 6844
|
SOA |
mname : FQND für den Host von dem dieses Records kommen.
rname : E-Mail Adresse für den Administrator dieser Domain.
serial : Aufsteigende Nummer für die Revision der angefragen Domain.
refresh : Aktualisierungsintervall den die sekundären Nameserver nutzen sollten,
wenn sie ihre gespiegelten Kopien der Zone aktualisieren wollen.
retry : Zeit die nach einem fehlerhaften Versuch gewartet werden soll.
expire : Maximale Zeit, die ein sekundärer Nameserver Kopien der Zone behalten soll. Wird nach jedem erfolgreichen Refresh neu gezählt.
minimum-ttl : Anzahl der Sekunden, die eine Anfrage im Cache behalten wird.
Kann von individuellen Resource Records überschrieben werden
resource records.
|
AAAA |
ipv6 : IPv6 Addresse
|
A6 (PHP >= 5.1.0) |
masklen : Anzahl der Bits, die von dem durch chain vorgegeben Ziel geerbt werden.
ipv6 : Adresse mit dem dieser spezielle Record zusammengeführt wird.
chain .
chain : Übergeordneter Record mit dem
ipv6 Daten zusammengeführt werden.
|
SRV |
pri : (Priorität) Niedrigere Zahlen bedeuten höhrere Priorität.
weight : Gewicht um die Chance jedes
targets zu beeinflussen. Bsp: Ziel A: 3, Ziel B: 2. Ziel A wird im Mittel in 60% der Fälle gewählt.
target and port : Hostname und Port unter dem der Service erreicht werden kann.
Für weitere Information siehe: » RFC 2782
|
NAPTR |
order and pref : Gleichweritg zu
pri and weight oben.
flags , services , regex ,
und replacement : Parameter wie in
» RFC 2915 definiert.
|
Version | Beschreibung |
---|---|
7.0.16, 7.1.2 | Unterstützung für den CAA Record-Typ wurde hinzugefügt. |
5.4.0 |
raw Parameter hinzugefügt.
|
5.3.0 | Diese Funktion ist jetzt auf Windows Plattformen verfügbar. |
5.3.0 |
Bis zu diesesm Release wurde bei gegebenem authns Parameter
auch der addtl Parameter benötigt
|
Beispiel #1 Benutzung von dns_get_record()
<?php
$result = dns_get_record("php.net");
print_r($result);
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
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 ) )
Beispiel #2 Benutzung von dns_get_record() und DNS_ANY
Da man häufig auch die IP des Mailservers für einen MX Record benötigt gibt dns_get_record()
auch ein Array in addtl
in dem die zugehörigen Records zu finden sind.
Ebenso wird authns
mit einer Liste der autorativen Nameserver zurückgegeben.
<?php
/* Request "ANY" record for php.net,
and create $authns and $addtl arrays
containing list of name servers and
any additional records which go with
them */
$result = dns_get_record("php.net", DNS_ANY, $authns, $addtl);
echo "Result = ";
print_r($result);
echo "Auth NS = ";
print_r($authns);
echo "Additional = ";
print_r($addtl);
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
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 ) )