2012-06-04 43 views
1

我在寫一個簡單的表單來檢查.com域是否可用。我使用下面的代碼評估了3種方法(@dns_get_record,gethostbyname()和checkdnsrr()),但是我得到了所有不可用的gethostbyname()和checkdnsrr()條目,您可以如果刷新幾次,請參閱@http://suggestmyname.com/nonwp/arraypush.php。在我的本地測試服務器上運行時,我沒有遇到這個問題,任何人都知道爲什麼不一致?並不是所有的域都在我的遠程服務器上進行檢查,但是在我的本地測試服務器上。PHP:不一致的結果gethostbyname()和checkdnsrr()

$sdomains = array(); 
array_push($sdomains, 'etc.com'); 

function domainAvailable1($domain){ 
$results = @dns_get_record($domain, DNS_ANY); 
return empty($results); 
} 
function domainAvailable2($domain){ 
return gethostbyname($domain) == $domain; 
} 
function domainAvailable3($domain){ 
return !checkdnsrr($domain, 'ANY'); 
} 

echo '<table><tr><td>@dns_get_record</td><td>gethostbyname</td><td>checkdnsrr</td></tr>';  

foreach($sdomains as $sdomain){ 
if (domainAvailable1($sdomain) == true){      
      echo '<tr><td bgcolor=green>' . $sdomain . ' is available!</td>'; 
      } else { 
      echo '<tr><td bgcolor=red>' . $sdomain . ' is NOT available.</td>'; 
      } 
if (domainAvailable2($sdomain) == true){      
      echo '<td bgcolor=green>' . $sdomain . ' is available!</td>'; 
      } else { 
      echo '<td bgcolor=red>' . $sdomain . ' is NOT available.</td>'; 
      } 
if (domainAvailable3($sdomain) == true){      
      echo '<td bgcolor=green>' . $sdomain . ' is available!</td></tr>'; 
      } else { 
      echo '<td bgcolor=red>' . $sdomain . ' is NOT available.</td></tr>'; 
      } 
} 
+1

爲什麼使用'@'進行'dns_get_record()'調用? – zerkms

+0

我正在按照建議和代碼@ http://w-shadow.com/blog/2011/01/04/how-to-quickly-check-domain-availability/ – Nick5a1

+1

直到你確定它是什麼時才使用它是適用於 – zerkms

回答

1

我不知道,使用其中的任何功能(基本上使用普通DNS)是一種可靠的方法,以確定是否有可用的域。

我有很多註冊的域名,絕對沒有DNS記錄,所以他們無法通過任何方式解決,但域當然採取。

雖然大多數域名都會有一些DNS記錄,但是會有些情況沒有。例如,腳本中的域名mymoney.com表示它可以通過所有3次檢查獲得,但域名已註冊。

您最好打賭是使用WHOIS查詢給定TLD的適當註冊商並使用WHOIS來確定可用性。我認爲如果您嘗試使用DNS,會出現誤報或其他您會遇到的問題。