Использование переменной PHP в dns_get_record?

Я получаю сообщение об ошибке с этим кодом:

      $type = "DNS_" . strtoupper($_GET['type']);
$array = dns_get_record($domain, $type);

Полезная информация:

      $_GET['type'] = "a"

Если я войдуDNS_Aвdns_get_record, код работает. Но при входе$type, я получаю сообщение об ошибке.

Тип динамический, и я получаю его из параметра URL, поэтому я не могу его жестко закодировать.

Что я делаю не так?

1 ответ

DNS_A на самом деле означает целое число 1, а НЕ строку «DNS_A».

Поэтому, пожалуйста, используйте

      <?php
$type=1; 
$result = dns_get_record("php.net", $type );
print_r($result);
?>

или используйте $_GET['type'] = 1, а затем используйте

      <?php
$type=$_GET["type"]; 
$result = dns_get_record("php.net", $type );
print_r($result);
?>

См. официальную документацию: ( int $type = DNS_ANY .... и т. д.)

https://www.php.net/manual/en/function.dns-get-record.php

Примечание: вы можете смешивать $type, например:

      <?php
$dnsr = dns_get_record('php.net', DNS_A + DNS_NS);
// same as $dnsr = dns_get_record('php.net', 3);
print_r($dnsr);
?>

Ключи (предопределенные константы)

      DNS_A = 1
DNS_NS = 2
DNS_CNAME = 16
DNS_SOA = 32
DNS_PTR = 2048
DNS_HINFO = 4096
DNS_MX = 16384
DNS_TXT = 32768
DNS_A6 = 16777216
DNS_SRV = 33554432
DNS_NAPTR = 67108864
DNS_AAAA = 134217728
DNS_ALL = 251713587
DNS_ANY = 268435456

Как советовал @bilbodog, есть еще DNS_CAA:

      DNS_CAA = 8192
Другие вопросы по тегам