Использование переменной 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