PHP.mk документација

dns_get_record

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.dns-get-record.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека function.dns-get-record.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
dns_get_record

Референца за `function.dns-get-record.php` со подобрена типографија и навигација.

function.dns-get-record.php

dns_get_record

класата mysqli_driver

dns_get_recordПреземи DNS ресурсни записи поврзани со име на хост

= NULL

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 наспроти [email protected]), проверете ја оваа вредност и изменете ја доколку е потребно пред да ја користите со функции како што е mail().

type

Стандардно, dns_get_record() ќе бара какви било ресурсни записи поврзани со hostname. За ограничување на барањето, користете едно од DNS_* constants.

authoritative_name_servers

Поминато по референца и, ако е дадено, ќе биде пополнето со Ресурсни записи за Авторитетни Именски Сервери.

additional_records

Поминато по референца и, ако е дадено, ќе биде пополнето со било кои Дополнителни Записи.

raw

На type ќе се толкува како ID на тип на суров DNS ( DNS_* константи не може да се користат). Вредноста на враќање ќе содржи data клуч, кој треба рачно да се парсира.

Вратени вредности

Оваа функција враќа низа од асоцијативни низи, или false при неуспех. Секоја асоцијативна низа содржи најмалку следниве клучеви:

Основни DNS атрибути
Атрибут Значење
host Записот во DNS именскиот простор на кој се однесуваат останатите поврзани податоци.
class dns_get_record() враќа само записи од класа Интернет и како таков овој параметар секогаш ќе враќа IN.
type Низа што го содржи типот на записот. Дополнителни атрибути исто така ќе бидат содржани во резултирачката низа во зависност од вредноста на типот. Погледнете ја табелата подолу.
ttl "Time To Live" преостанато за овој запис. Ова ќе not биде еднакво на оригиналниот ttl на записот, туку ќе биде еднакво на оригиналниот 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 : IANA број што го означува Оперативниот Систем на машината на која се однесува овој запис. Погледнете го IANA за значењето на овие вредности.
CAA flags: Еднобајтно поле со битови; моментално е дефиниран само битот 0, што значи „критичен“; другите битови се резервирани и треба да се игнорираат. tag: Името на ознаката на CAA (алфанумеричка ASCII низа). value: Вредноста на ознаката на CAA (бинарна низа, може да користи подформати). За дополнителни информации видете: » RFC 6844 : FQDN на машината од која потекнуваат записите за ресурси.
SOA mname: Е-пошта адреса на административниот контакт за оваа домејн. rname: Сериски број # на оваа ревизија на бараната домејн. serial: Интервал на освежување (секунди) што секундарните DNS сервери треба да ги користат при ажурирање на оддалечените копии на оваа домејн. refresh: Времетраење (секунди) за чекање по неуспешно освежување пред да се направи втор обид. retry: Максимално времетраење (секунди) што секундарниот DNS сервер треба да ги задржи оддалечените копии на податоците од зоната без успешно освежување пред да ги отфрли. expire: Минимално времетраење (секунди) што клиентот може да продолжи да користи DNS резолуција пред да побара нова резолуција од серверот. Може да биде надминато од индивидуални записи за ресурси. minimum-ttl: IPv6 адреса
AAAA ipv6: Должина (во битови) што треба да се наследи од целта наведена во
A6 masklen: Адреса за овој специфичен запис што треба да се спои со chain. ipv6: Родителски запис со кој треба да се спои chain. chain: (Приоритет) најниските приоритети треба да се користат прво. ipv6 data.
SRV pri: Рангирање за да се одреди кој од заеднички приоритетните треба да се избере случајно. weight: Рангирање за тежината на кое од често приоритетните targets треба да се избере случајно. target and port: хост име и порта каде што може да се најде бараната услуга. За дополнителни информации видете: : hostname and port where the requested service can be found. For additional information see:
NAPTR order and pref» RFC 2782 pri and weight above. flags, services, regexПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во replacement: Equivalent to : Parameters as defined by.

Дневник на промени

Верзија = NULL
7.0.16, 7.1.2 Додадена е поддршка за Argon2id лозинки користејќи PASSWORD_ARGON2ID.

Примери

Пример #1 Користење dns_get_record()

<?php
$result
= dns_get_record("php.net");
print_r($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
        )

)

Пример #2 Користење dns_get_record() » RFC 2915

and DNS_ANY dns_get_record() Since it's very common to want the IP address of a mail server once the MX record has been resolved, additional_records also returns an array in authoritative_name_servers which contains associate records.

<?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);
?>

Горниот пример ќе прикаже нешто слично на:

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
        )

)

Види Исто така

Белешки од корисници Управување со PDO конекции

- Alias of checkdnsrr
пред 11 години
This method has no error handling, it simply puts out "false" and it is impossible to check for NXDOMAIN, SERVFAIL, TIMEOUT or any other error...
NaturalBornCamper
пред 8 години
You might have the same problem as me, where testing a non-existent domain will search for a subdomain relative to the domain you are executing from, for example:

// Test with working domain
var_dump( dns_get_record('google.com', DNS_A) );
/* works, returns
Array
(
    [host] => google.com
    [class] => IN
    [ttl] => 299
    [type] => A
    [ip] => 172.217.12.142
)
*/

// Test with invalid domain on our website (example.com)
var_dump( dns_get_record('invalidtestingname.com', DNS_A) );
/* Doesn't work, pretend it's a subdomain
Array
(
    [host] => invalidtestingname.com.example.com
    [class] => IN
    [ttl] => 299
    [type] => A
    [ip] => xxx.xxx.xxx.xxx
)
*/

If anyone has that problem, add a "dot" at the end of the domain name, for example, instead of
dns_get_record('invalidtestingname.com', DNS_A);
Do this:
dns_get_record('invalidtestingname.com.', DNS_A);
tobias at herkula dot info
12 години пред
Although this works very well for general DNS queries if you want to do a direct DNS query to a specified DNS server (rather than using OS resolution) try PHPDNS: http://www.purplepixie.org/phpdns/

You can do direct (TCP or UDP) low-level queries to a nameserver and recurse at will. Very useful for testing specific servers and also for walking through a recursive resolution.
PHP Joe
пред 17 години
Get more than one type at once like this:
<?php
$dnsr = dns_get_record('php.net', DNS_A + DNS_NS);
print_r($dnsr);
?>

Using DNS_ALL fails on some domains where DNS_ANY works. I noticed the function getting stuck on the DNS_PTR record, which caused it to return FALSE with this error:
PHP Warning:  dns_get_record(): res_nsend() failed in ....

This gets all records except DNS_PTR:
<?php
$dnsr = dns_get_record('php.net', DNS_ALL - DNS_PTR);
print_r($dnsr);
?>
dylan at pow7 dot com
пред 9 години
Please note that Firewalls and anti malware software detects  (and depending on company policies even blocks) DNS_ANY requests. 
In that case the usage of this function fails.
This is because DNS_ANY requests can be  exploited for creating "amplification (D)DOS attackes": You send 1 DNS_ANY request and get a huge amount of information back, thus even small requests can result into hugh network load.

I advise to use a more explicit name-request instead of using DNS_ANY.
ohcc на 163 dot com
пред 8 години
When I use DNS_ALL as the second parameter to invoke dns_get_record() on the OS of Windows, PHP emits a warning with the message "Warning: dns_get_record(): Type '251721779' not supported in blah.php on line blah", and DNS_ANY is always OKAY.
bohwaz
3 години пред
Sadly this method does not allow for using an arbitrary nameserver.

If you need to make a request  using a specific DNS server, you'll need to use either Pear/Net_DNS2, or libdns ( https://github.com/DaveRandom/LibDNS ).

If you want something shorter and lighter, you can also use this 150 lines function: https://gist.github.com/bohwaz/ddc61c4f7e031c3221a89981e70b830c
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.