我想使用PHP来检查指定的主机名是否正在解析运行PHP脚本的服务器。通过主机名,我的意思与我在特定上下文中的域名相同。
我说,例如,我们说我有一台服务器,它的公共IP地址是123.123.123.123或类似的东西。我的DNS服务器正在将这两个域解析为此IP地址:domain1.com和domain2.com。我通过domain1.com访问服务器上的PHP页面,但是我希望脚本告诉我domain2.com是否正在解析服务器并返回适当的结果,如回显“是”'或者' no'。
我不确定如何处理这个问题。我想到了两种可能性:
尝试类似于' ping'主机名,看看是否有响应,但我认为这不会起作用,因为它本地本地,可能要求在服务器的主机文件中解析主机名,这就搞砸了这一点(我想看看主机名是否解析了互联网上的其他客户端,而不是本地机器),或者
检查主机名的DNS服务器以查看它是否解析为服务器的公共IP,在这种情况下,我必须以某种方式在PHP中获取公共IP。
我该如何处理?
示例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 :(';
}