【问题标题】:How can I resolve a domain name to an IP address when the PHP functions fail?PHP函数失败时如何将域名解析为IP地址?
【发布时间】:2017-01-16 19:20:40
【问题描述】:

我需要将 PHP 中的任何给定域解析为其对应的 IP 地址。 gethostbyname 似乎执行反向 DNS (rDNS),对于获取国内连接的 IP 地址(没有直接 rDNS)没有用。

我有以下,当然不行:

<?php
    if (ISSET($_POST["domain"])) {
        require_once("/protected/db.php");
        echo gethostbyname($_POST["domain"]);
    }
    echo "Error";
?>

使用dns_get_record 返回Array ( ),当我尝试下面的代码from this answer: 时,PHP 打印出Array ( ) 似乎不起作用

$result = dns_get_record($_POST["domain"],DNS_ALL);
print_r($result);

我该怎么做?

【问题讨论】:

  • @Machavity 这没有回答我的问题(如下所示)。
  • 怎么不回答呢?
  • @Machavity 查看我的编辑。也许我使用不正确,然后我想我可能会因为使用本地地址而混淆它,但我使用正确的公共 DNS 名称作为输入(我是 $_GET'ing 进行测试)所以我不不知道。
  • 另外,如果事实证明我使用不正确,那么我很乐意删除我的答案并接受 cegfaults'。我认为gethostbynamedns_get_record 对某些地址有问题,例如我用来测试的住宅地址。我不确定某些地址实际上是什么,但我的肯定有一个 rDNS,所以不可能是它,所以它一定是完全不同的东西。
  • 好吧,这已经足够不同了,不会被骗。重新开放

标签: php


【解决方案1】:

您可能想使用dns_get_record()

我会强烈建议不要使用cybermonkey 的解决方案,因为shell_exec() (a) 依赖于平台,并且(b) 可能存在重大安全问题。

【讨论】:

  • cybermonkey 是这个问题的作者。 ;)
猜你喜欢
  • 2010-09-05
  • 2019-09-29
  • 2011-03-12
  • 1970-01-01
  • 2021-03-22
  • 2020-08-25
  • 2014-06-18
  • 2011-05-07
  • 2012-11-27
相关资源
最近更新 更多