【问题标题】:Why am I getting such random results when checking DNS?为什么我在检查 DNS 时会得到如此随机的结果?
【发布时间】:2010-04-07 04:38:07
【问题描述】:

代码如下:

$domain = "fosajfjdkgdajfhsd.com";
$check1 = checkdnsrr($domain, "MX");
$check2 = checkdnsrr($domain, "A");
$check3 = (checkdnsrr($domain, "MX") || checkdnsrr($domain, "A"));
$check4 = !(checkdnsrr($domain, "MX") || checkdnsrr($domain, "A"));
die("{$check1} - {$check2} - {$check3} - {$check4}");

但是,当我检查输出以查看它返回的内容时,我得到了这个:

 - 1 - 1 - 

该域显然不存在,所以我不明白为什么检查 A 记录返回 true 并且检查 MX 结果根本没有给我任何东西。我不明白这里出了什么问题。

【问题讨论】:

  • 我想可能是本地路由异常。您是否尝试过在域末尾添加一个尾随句点来强制执行其根? PHP 手册中有关 checkdnsrr() 的评论表明,即。 'fosajfjdkgdajfhsd.com.'

标签: php dns boolean


【解决方案1】:
$ dig fosajfjdkgdajfhsd.com

; <<>> DiG 9.6.0-APPLE-P2 <<>> fosajfjdkgdajfhsd.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39121
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;fosajfjdkgdajfhsd.com.     IN  A

;; ANSWER SECTION:
fosajfjdkgdajfhsd.com.  0   IN  A   208.69.32.132

;; Query time: 121 msec
;; SERVER: 208.67.222.222#53(208.67.222.222)
;; WHEN: Wed Apr  7 00:59:59 2010
;; MSG SIZE  rcvd: 55

编辑:检查您的 DNS 提供商。如今,他们中的许多人会返回自己的A记录,以便在无法解析域名时将广告放在您的眼前。破坏 DNS,但要付出代价。

【讨论】:

  • 好的,所以输入随机字母不起作用。但我一直在尝试各种其他组合,它们都返回相同的结果。我尝试了不可能存在的“gfsgfghghjggdajfhsd.bite”,因为 .bite 甚至不是有效的域扩展名,但我仍然对 A 记录正确。
  • +1,如果您尝试返回不存在的域,则默认情况下,时代华纳有线电视 (RoadRunner) 等 ISP 会为您提供登录页面。正如 Fred 提供的那样,我很想看看你的盒子的 dig 输出。 (在我的工作连接上,$check2 为我返回 false。)
【解决方案2】:

好的,所以在浏览了checkdnsrr() 的 PHP.net 文档中的所有示例后,我发现对于 A 记录,您仍然需要附加一个“。”到域的末尾,以便对其进行有效检查。我认为 PHP 会自动为你做那种事情,但不管怎样都行。现在结果如预期。

【讨论】:

  • 哈,我刚刚对这个建议发表了评论。我应该把它作为答案发布;)
  • 是的,你应该有,哈哈。发布后我注意到了它。
猜你喜欢
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
  • 2019-12-02
  • 2017-01-17
  • 2023-03-10
  • 2021-12-22
  • 1970-01-01
  • 2014-08-22
相关资源
最近更新 更多