dns_get_record
(PHP 5, PHP 7, PHP 8)
dns_get_record — Отримання ресурсних записів DNS хоста
Опис
dns_get_record( string $hostname, int $type = DNS_ANY, array &$authoritative_name_servers = null, array &$additional_records = null, bool $raw = false): array|false
Здійснює вибірку DNS-записів, що відповідають властивостям хоста hostname
Список параметрів
hostname
Параметрhostname
має бути коректним DNS-іменем таким як "www.example.com
". Зворотний дозвіл імен хостів може бути зроблений з використанням нотації in-addr.arpa
, однак, для цієї мети краще скористатися функцією gethostbyaddr()
Зауваження :
Відповідно до стандартів DNS, адреси електронної пошти задаються у форматі
user.host
(наПриклад,hostmaster.example.com
в отличие отhostmaster@example.com
), тому будьте уважні та додатково перевірте це значення, перш ніж використовувати його в таких функціях, як mail()
type
По умолчаниюdns_get_record() шукатиме всі можливі записи, що відповідають заданому імені хоста hostname
. Щоб звузити коло пошуку, можна встановити необов'язковий параметр type
. Цей параметр може приймати такі значення: DNS_A
DNS_CNAME
DNS_HINFO
DNS_CAA
DNS_MX
DNS_NS
DNS_PTR
DNS_SOA
DNS_TXT
DNS_AAAA
DNS_SRV
DNS_NAPTR
DNS_A6
DNS_ALL
або DNS_ANY
Зауваження :
Через неоднозначну поведінку libresolv на різних платформах,
DNS_ANY
може повернути не всі записи, повільнішийDNS_ALL
поверне всі записи надійніше.
Зауваження :
Windows:
DNS_CAA
не підтримується. Підтримка **DNS_A6
**не реализована.
authoritative_name_servers
Передається за посиланням і, якщо передано, буде заповнюватися ресурсними записами для серверів, що засвідчують(Authoritative Name Servers).
additional_records
Передається за посиланням і, якщо передано, заповнюватиметься додатковими записами(Additional Records).
raw
type
буде інтерпретований як необроблений ідентифікатор типу DNS (не можна використовувати константи DNS_*
). Значення, що повертається, міститиме ключ data
, що необхідно проаналізувати вручну.
Значення, що повертаються
Ця функція повертає масив асоціативних масивів або false
у разі виникнення помилки. Кожен асоціативний масив містить щонайменшеследующие ключи:
Основні атрибути DNS
Атрибут | Опис |
---|---|
host | Запис у просторі імен DNS, на яку посилається решта даних. |
class | dns_get_record() повертає тільки записи класу Internet, відповідно цей параметр завжди прийматиме значення IN |
type | Рядок, що містить тип запису. Додаткові атрибути також містяться в результуючому масиві в залежності від типу. По одному вкладеному масиву за кожен тип. Дивіться таблицю нижче. |
ttl | Час життя ("Time To Live" ) Залишилося для цього запису. Це не вихідне ttl записи. Воно дорівнює вихідному за вирахуванням часу, що минув з моменту відправки запиту на сервер. |
Інші ключі асоціативного масиву, що відповідають типу 'type'
Тип записи | Дополнительные данные |
---|---|
A | ip : адреси IPv4 у десятковому форматі з роздільниками. |
MX | pri : Пріоритет поштового сервера Чим нижче число, тим вищий пріоритет. . target : FQDN поштового сервера Дивіться також dns_get_mx() |
CNAME | target : FQDN розташування в просторі імен DNS, на яке вказує запис. |
NS | target : FQDN - ім'я сервера, який є авторитетним для цього імені хоста. |
PTR | target : Розміщення без вказівки простору імен DNS, на яке вказує запис. |
TXT | txt : Рядок даних, пов'язаних із цим записом. |
HINFO | cpu : число IANA, що позначає модель процесора комп'ютера, який вказує цей запис. . os : число IANA, що означає операційну систему комп'ютера, який вказує цей запис. Дивіться додатково IANA »Operating System Names |
CAA | flags : Однобайтове бітове поле; в даний момент визначено лише біт номер 0, що називається 'critical'; інші біти зарезервовані та мають ігноруватися. . tag : Ім'я тега CAA (літерно-числовий рядок ASCII). . value : Значення CAA (бінарний рядок, можна використовувати підформати). Докладніше читайте тут: » RFC 6844 |
SOA | mname : FQDN комп'ютера, з якого отримані ресурсні записи. . rname : Адреса електронної пошти адміністратора домену . serial : Порядковий номер цієї ревізії домена, що запитується. . refresh : Інтервал часу (в секундах), який мають використовувати вторинні сервери під час оновлення видалених копій цього домену. . retry : Час очікування (у секундах) після невдалого оновлення до наступної спроби. . expire : Максимальний час (в секундах), протягом якого вторинний DNS-сервер повинен тримати в пам'яті дані віддалених копій доменної зони, перш ніж відповісти, коли не вдається оновити дані. . minimum-ttl : Мінімальний час (у секундах), протягом якого клієнт може працювати з поточною DNS-роздільною здатністю, перш ніж йому доведеться повторно запитувати цю роздільну здатність. Значення може бути замінено окремими ресурсними записами. |
AAAA | ipv6 : адреса IPv6 |
A6 | masklen : Довжина (у бітах), яку потрібно успадкувати від цільової адреси chain . . ipv6 : Адреса для цього конкретного запису, який потрібно об'єднати з chain . . chain : Запис, який потрібно доповнити даними ipv6 |
SRV | pri : (Пріоритет) менші значення мають використовуватися першими. . weight : Ранжування. Записам з великою вагою віддається перевага. . targets має вибиратися випадково. . target иport : ім'я хоста та номер порту, на якому можна знайти потрібну службу. Додаткову інформацію можна отримати за посиланням: » RFC 2782 |
NAPTR | order иpref : Еквівалентні pri иweight наведеним вище. . flags services regex иreplacement : Параметри, визначені в » RFC 2915 |
список змін
Версия | Опис |
---|---|
7.0.16, 7.1.2 | Додано підтримку записів типу CAA. |
Приклади
Приклад #1 Приклад використання dns_get_record()****
Loading...
Висновок наведеного прикладу буде схожим на:
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
)
)
Приклад #2 Использованиеdns_get_record()с DNS_ANY
Так як досить часто потрібно визначити IP-адресу поштового сервера, після того як запис MX було дозволено, dns_get_record() повертає масив additional_records
із відповідними записами. Масив authoritative_name_servers
міститиме список посвідчувальних DNS-серверів.
Loading...
Висновок наведеного прикладу буде схожим на:
Результат = 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
)
)
Удостоверяющие серверы = 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
)
)
Дополнительные записи = 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
)
)
Дивіться також
- dns_get_mx() - Псевдонім getmxrr
- dns_check_record() - Псевдонім checkdnsrr