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, на яку посилається решта даних.
classdns_get_record() повертає тільки записи класу Internet, відповідно цей параметр завжди прийматиме значення IN
typeРядок, що містить тип запису. Додаткові атрибути також містяться в результуючому масиві в залежності від типу. По одному вкладеному масиву за кожен тип. Дивіться таблицю нижче.
ttlЧас життя ("Time To Live") Залишилося для цього запису. Це не вихідне ttl записи. Воно дорівнює вихідному за вирахуванням часу, що минув з моменту відправки запиту на сервер.

Інші ключі асоціативного масиву, що відповідають типу 'type'

Тип записиДополнительные данные
Aip: адреси IPv4 у десятковому форматі з роздільниками.
MXpri: Пріоритет поштового сервера Чим нижче число, тим вищий пріоритет. . target: FQDN поштового сервера Дивіться також dns_get_mx()
CNAMEtarget: FQDN розташування в просторі імен DNS, на яке вказує запис.
NStarget: FQDN - ім'я сервера, який є авторитетним для цього імені хоста.
PTRtarget: Розміщення без вказівки простору імен DNS, на яке вказує запис.
TXTtxt: Рядок даних, пов'язаних із цим записом.
HINFOcpu: число IANA, що позначає модель процесора комп'ютера, який вказує цей запис. . os: число IANA, що означає операційну систему комп'ютера, який вказує цей запис. Дивіться додатково IANA »Operating System Names
CAAflags: Однобайтове бітове поле; в даний момент визначено лише біт номер 0, що називається 'critical'; інші біти зарезервовані та мають ігноруватися. . tag: Ім'я тега CAA (літерно-числовий рядок ASCII). . value: Значення CAA (бінарний рядок, можна використовувати підформати). Докладніше читайте тут: » RFC 6844
SOAmname: FQDN комп'ютера, з якого отримані ресурсні записи. . rname: Адреса електронної пошти адміністратора домену . serial: Порядковий номер цієї ревізії домена, що запитується. . refresh: Інтервал часу (в секундах), який мають використовувати вторинні сервери під час оновлення видалених копій цього домену. . retry: Час очікування (у секундах) після невдалого оновлення до наступної спроби. . expire: Максимальний час (в секундах), протягом якого вторинний DNS-сервер повинен тримати в пам'яті дані віддалених копій доменної зони, перш ніж відповісти, коли не вдається оновити дані. . minimum-ttl: Мінімальний час (у секундах), протягом якого клієнт може працювати з поточною DNS-роздільною здатністю, перш ніж йому доведеться повторно запитувати цю роздільну здатність. Значення може бути замінено окремими ресурсними записами.
AAAAipv6: адреса IPv6
A6masklen: Довжина (у бітах), яку потрібно успадкувати від цільової адреси chain. . ipv6: Адреса для цього конкретного запису, який потрібно об'єднати з chain. . chain: Запис, який потрібно доповнити даними ipv6
SRVpri: (Пріоритет) менші значення мають використовуватися першими. . weight: Ранжування. Записам з великою вагою віддається перевага. . targets має вибиратися випадково. . targetиport: ім'я хоста та номер порту, на якому можна знайти потрібну службу. Додаткову інформацію можна отримати за посиланням: » RFC 2782
NAPTRorderиpref: Еквівалентні priиweight наведеним вище. . flagsservicesregexи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
        )

)

Дивіться також