PHP检查主机名是否已解析为本地计算机

时间:2017-03-05 03:23:20

标签: php server ping hostname resolve

我想使用PHP来检查指定的主机名是否正在解析运行PHP脚本的服务器。通过主机名,我的意思与我在特定上下文中的域名相同。

我说,例如,我们说我有一台服务器,它的公共IP地址是123.123.123.123或类似的东西。我的DNS服务器正在将这两个域解析为此IP地址:domain1.com和domain2.com。我通过domain1.com访问服务器上的PHP页面,但是我希望脚本告诉我domain2.com是否正在解析服务器并返回适当的结果,如回显“是”'或者' no'。

我不确定如何处理这个问题。我想到了两种可能性:

  1. 尝试类似于' ping'主机名,看看是否有响应,但我认为这不会起作用,因为它本地本地,可能要求在服务器的主机文件中解析主机名,这就搞砸了这一点(我想看看主机名是否解析了互联网上的其他客户端,而不是本地机器),或者

  2. 检查主机名的DNS服务器以查看它是否解析为服务器的公共IP,在这种情况下,我必须以某种方式在PHP中获取公共IP。

  3. 我该如何处理?

    示例PHP脚本将是:

    function host_resolves($host){
        // get server public IP
        // check if hostname is a valid domain name
        // try to connect to the hostname's DNS server
        // query the DNS server and compare IP (maybe in A record?) to public IP
        // split off a sub-domain and check for a CNAME if needed
    }
    
    if(host_resolves('domain2.com')){
        echo 'yep!';
    }
    else{
        echo 'nup :(';
    }
    

0 个答案:

没有答案