2017-06-12 120 views
0

当我使用dns_get_record为像google.com一样存在的域,一切工作正常,但如果我在一个不存在的域使用它,函数获取来自我们域的子域的信息,例如test.example.com,我该如何防止这种情况发生?PHP的dns_get_record返回子域记录而不是域记录

// Test with working domain 
var_dump(dns_get_record('google.com', DNS_A)); 
/* works, returns 
Array 
(
    [host] => google.com 
    [class] => IN 
    [ttl] => 299 
    [type] => A 
    [ip] => 172.217.12.142 
) 
*/ 

// Test with invalid domain on our website (example.com) 
var_dump(dns_get_record('invalidtestingname.com', DNS_A)); 
/* Doesn't work, pretend it's a subdomain 
Array 
(
    [host] => invalidtestingname.com.example.com 
    [class] => IN 
    [ttl] => 299 
    [type] => A 
    [ip] => xxx.xxx.xxx.xxx 
) 
*/ 
+0

也许你应该尝试运行在不同的网络代码:p – ajreal

+0

检查您的php版本。它为无效域返回空数组。试试这里:http://www.writephponline.com/ – Santosh

+0

是的,我想也许我们的服务器或PHP有一些奇怪的设置..但我不知道是什么原因造成这个:( – NaturalBornCamper

回答

2

如果任何人有这个问题,在域名的末尾添加一个 “点”,例如,而不是

dns_get_record('invalidtestingname.com', DNS_A); 

这样做:

dns_get_record('invalidtestingname.com.', DNS_A); 

然后PHP不会尝试检查您自己的域的子域,它会正确搜索。不知道为什么没有人有这个问题之前,甚至没有任何关于此问题的意见在php.net

+0

不知道如果你遇到的问题是总体PHP问题或特定于您的系统配置的东西,但是,我知道DNS认为一个域名**,**不会以点结尾为“相对”子域名,所以我不会感到惊讶 –

+0

是啊..不知道是什么原因导致这个,我有一种感觉这是我们的配置,但我不熟悉DNS,所以这个技巧工作得很好。惊讶的没有人遇到过这个问题,希望它能帮助其他人 – NaturalBornCamper