PHP Получить IP-адрес на основе имени хоста
Мне нужно реализовать решение от WinApp
, написанное в C#
до PHP
. Мне нужно извлечь IP
на основе host name
. Следующий фрагмент кода отлично работает:
IPHostEntry LocalHostIPEntry = Dns.GetHostEntry(hostname);
IPAddress LocalHostIP = LocalHostIPEntry.AddressList[0];
string ipfromhost = LocalHostIP.ToString();
Единственный вариант, который я нашел до сих пор в PHP
:
gethostbyname('hostname');
Но это возвращает другой IP
для одного и того же хоста, чем код C#
. Кроме того, возвращаемое значение IP
неверно. Если я проверяю связанный узел с помощью nslookup -IPaddress-
, тогда я получаю совершенно другое имя хоста.
Что происходит? Какие другие методы можно использовать для поиска IP
в host
в сети с помощью PHP
?
Ответы
Ответ 1
вы можете использовать функцию php dns_get_record
array dns_get_record ( string $hostname [, int $type = DNS_ANY [, array &$authns [, array &$addtl [, bool &$raw = false ]]]] )
И затем посмотрите в массиве запись типа A (означает IPv4)
Ответ 2
Есть 2 решения для получения хост-IP с использованием 2 предопределенных функций
$ip = gethostbyname('php.net');
echo $ip;
$result = dns_get_record("php.net");
print_r($result);
Будет работать, когда у вас есть доступ к этим сайтам через ваш брандмауэр. он блокируется, тогда вы увидите свой локальный ip вместо желаемого IP-адреса сайта.