(PHP 5, PHP 7)
dns_get_record — Belirtilen konak adı ile ilgili DNS Özkaynak Kayıtlarını getirir
$konakadı
[, int $tür = DNS_ANY
[, array &$yetkili_enesler
[, array &$ek_kayıtlar
]]] )
Belirtilen konakadı ile ilgili DNS Özkaynak
Kayıtlarını (DNS-RR) getirir.
konakadı
konakadı, "www.example.com"
gibi geçerli bir konak adı olmalıdır. Ters DNS sorguları
in-addr.arpa gösterimiyle üretilir, fakat
gethostbyaddr() işlevi ters DNS sorguları için daha
kullanışlıdır.
Bilginize:
DNS standartlarının amacı gereği, posta adresleri kullanıcı.konak biçiminde verilir (örneğin, hostmaster@example.com değil hostmaster.example.com). Sorgudan böyle bir değer aldıysanız, mail() gibi bir işlevde kullanmadan önce bunu normal eposta adresi haline getirmelisiniz.
tür
dns_get_record() öntanımlı olarak,
konakadı ile ilgili bütün özkaynak kayıtlarını
arayacaktır. Sorguyu belli kayıtlarla sınırlamak için isteğe bağlı
tür değiştirgesini kullanabilirsiniz.
tür olarak şunlardan biri belirtilebilir:
DNS_A, DNS_CNAME,
DNS_HINFO, DNS_MX,
DNS_NS, DNS_PTR,
DNS_SOA, DNS_TXT,
DNS_AAAA, DNS_SRV,
DNS_NAPTR, DNS_A6,
DNS_ALL veya DNS_ANY.
DNS_ANY öntanımlıdır.
Bilginize:
Çeşitli platformlarda libresolv başarımının dışmerkezliliğinden dolayı
DNS_ANYher zaman bütün kayıtları döndürmez. Daha yavaş fakat daha güvenilir olanDNS_ALLtüm kayıtları toplayacaktır.
yetkili_eneslerGönderimli aktarılır. Belirtilirse Yetkili Ad Sunucuları ile ilgili Özkaynak Kayıtları bu diziye yerleştirilir.
ek_kayıtlarGönderimli aktarılır. Belirtilirse Ek Kayıtlar ile ilgili Özkaynak Kayıtları bu diziye yerleştirilir.
Bu işlev ilişkisel diziler içeren bir dizi ile döner. He ilişkisel dizi en azından aşağıdaki anahtarları mutlaka içerir:
| Öznitelik | Anlamı |
|---|---|
| host | DNS isim alanındaki, ilişkili tüm verinin atfedildiği kayıt. |
| class | dns_get_record() daima sadece İnternet sınıfı kayıtları döndürdüğünden bu üyenin değeri daima IN'dir. |
| type | Kayıt türünü içeren dizge. Tür değerine bağlı olarak dizide ek öznitelikler bulunabilir. Aşağıdaki tabloya bakınız. |
| ttl | "Time To Live". Bu kayıt için kalan yaşam süresi. Bu değer, özgün ttl ile aynı değildir. Özgün ttl'den yetkili isim sunucu sorgulandığından beri geçen süre düşüldükten sonra kalan değerdir. |
| Tür | Ek Sütunlar |
|---|---|
| A | ip: Noktalı sayısal gösterimle bir IPv4 adresi. |
| MX | pri: Posta alıcısının önceliği. Düşük sayılar daha yüksek öncelik belirtir. |
| target: Posta alıcısının tamamen nitelenmiş alan adı. Ayrıca bakınız: dns_get_mx(). | |
| CNAME | target: Kaydın takma ad olduğu DNS isim alanındaki konumun tamamen nitelenmiş alan adı. |
| NS | target: Bu konak adı için yetkili olan isim sunucusunun tamamen nitelenmiş alan adı. |
| PTR | target: DNS isim alanında bu kayda işaret eden konum. |
| TXT | txt: Bu kayıtla ilişkili dizge türünde keyfi bir veri. |
| HINFO | cpu: Bu kaydın gösterdiği makinenin işlemcisi için IANA ismi. |
| os: Bu kaydın gösterdiği makinenin işletim sistemi için IANA ismi. Bu değerlerin anlamları için IANA'nın » İşletim Sistemi İsimleri belgesine bakınız. | |
| SOA | mname: Özkaynak kaydının kaynaklandığı makinenin tamamen nitelenmiş alan adı. |
| rname: Bu alanın içerik yetkilisinin eposta adresi. | |
| serial: İstenen alanın bu sürümünün sıra numarası. | |
| refresh: Bu alanın uzak kopyaları güncellenirken ikincil isim sunucularının tazelenme süresi (saniye cinsinden). | |
| retry: Tekrar bir tazeleme yapmadan önce beklenecek süre (saniye cinsinden). | |
| expire: Başarısız bir tazelemenin ardından bölge verisinin uzak kopyalarını silmeden önce DNS sunucusunun bekleyeceği azami süre (saniye cinsinden). | |
| minimum-ttl: Bir istemcinin sunucudan yeni bir çözünürlük isteği yapmadan önce mevcut DNS çözünürlüğünü kullanmaya devam edebileceği asgari süre (saniye cinsinden). Özkaynak kayıtlarının her biri kendi süresini belirleyerek bunu geçersiz kılabilir. | |
| AAAA | ipv6: IPv6 adresi. |
| A6 (PHP >= 5.1.0) | masklen: chain ile belirtilen hedeften miras alınan uzunluk (bit cinsinden). |
| ipv6: chain'e katıştırılacak bu özel kayıt için adres. | |
| chain: ipv6 verisi ile katıştırılacak ebeveyn kayıt. | |
| SRV | pri: (Priority kısaltması) En düşük değerin önceliği en yüksektir. |
| weight: Ortak önceliklerin tercih sıralaması. | |
| targets rasgele seçilmelidir. target ve port: İstenen hizmetin bulunabileceği konak adı ve port. Ek bilgi için » RFC 2782'ye bakınız. | |
| NAPTR | order ve pref: Yukarıdaki pri ve weight ile eşdeğerdirler. |
| flags, services, regex ve replacement: » RFC 2915 tarafından tanımlanmış değiştirgelerdir. |
| Sürüm: | Açıklama |
|---|---|
| 5.3.0 | İşlev Windows platformlarında da kullanılabilir oldu. |
Örnek 1 - dns_get_record() kullanımı
<?php
$result = dns_get_record("php.net");
print_r($result);
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
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
)
)
Örnek 2 - dns_get_record() ve DNS_ANY kullanımı
MX kaydı çözümlendikten sonra normal olarak posta sunucusunun adresi
istenir. dns_get_record() işlevi ayrıca, ilişkili
kayıtları ek_kayıtlar dizisinde döndürür. Bunun
yanında, yetkili_enesler dizisinde de yetkili isim
sunucularının listesini döndürür.
<?php
/* php.net için "ANY" kayıt isteği yaparken
isim sunucularının ve ek kayıtların listeleri için
$yetkiliNS ve $ekkayıtlar dizilerini kullanalım */
$yetkilins=array(); $ekler=array();
$sonuç = dns_get_record("php.net", DNS_ANY, $yetkilins, $ekler);
echo "Sonuç = ";
print_r($sonuç);
echo "Yetkili NS = ";
print_r($yetkilins);
echo "Ek Kayıtlar = ";
print_r($ekler);
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Sonuç = 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
)
)
Yetkili 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
)
)
Ek Kayıtlar = 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
)
)
Bilginize:
Bu işlevin henüz gerçeklenmediği PHP sürümlerinin kullanıldığı Windows ve *BSD sistemlerinde de (Mac dahil) » PEAR » Net_DNS sınıfını deneyin.