簡體   English   中英

PHP:如何使用gethostbyname()防止nslookup將域附加到服務器-FQDN

[英]PHP: how to prevent domain from being appended to the server-FQDN by nslookup using gethostbyname()

我正在使用以下代碼來檢查域中是否存在dns條目(基本上是為了驗證域名是否真實)...

$sdip = gethostbyname("www.nonexistancedomainsdlkmsaldsa.com.");
$sddomain = gethostbyaddr($sdip);
print "IP: $sdip\n";
print "Domain: $sddomain\n";

它正在返回...... IP:67.215.65.132域名:hit-nxdomain.opendns.com

所以我假設它實際上正在搜索www.nonexistancedomainsdlkmsaldsa.com.myhostname.com(對此不完全確定)。

我在php.net上閱讀了關於添加一篇文章的文章. 跟隨域名,所以我嘗試了這個並沒有改變任何東西。 任何人都明白我為什么會這樣? 基本上,這就是我想要做的......

用戶輸入域名(沒有http / https)....它檢查域是否存在,如果存在,則繼續我的腳本,如果不存在,則失敗並顯示錯誤消息。

我希望他們能夠輸入任何有效的域名並進行檢查。 所以如果有更好的事情,任何其他解決方案都會有所幫助。 基本上我使用它作為驗證,看看域名是否存在。

我也想(如果可能的話),想知道如何檢查sub.subdomain.domain.tld的regexp,其中不需要sub和subdomain(基本上是為了查看format是否是有效的格式)。 我已經搜索了stackoverflow,但他們沒有進入我需要允許sub.subdomain但不需要它們的細節。

php.net上的文章:

如果您執行gethostbyname()並且在域名無法解析后沒有尾隨點,則此域名最終將由nslookup附加到服務器-FQDN。

因此,如果您查找nonexistentdomainname.be,您的服務器可能會返回ip for nonexistentdomainname.be.yourhostname.com,即server-ip。

要避免此行為,只需在域名中添加一個尾隨點; 即gethostbyname('nonexistentdomainname.be。')

編輯

它實際上並沒有返回我的服務器IP(我忽略了)。 所以我不知道那篇文章是否與這個問題有關。 我會留下它以防萬一。

聽起來你正在使用OpenDNS作為DNS服務器。 當您為不存在的域查詢OpenDNS時,他們會將您重定向到他們自己的“搜索結果”頁面/服務器之一。 這是專門針對OpenDNS的,其他DNS服務器不應該以這種方式運行並正確返回無結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM