3

PHPでcheckdnsrr()関数を試して、指定されたホスト名が有効かどうかをテストしていました。

以下はPHPコードです。

$url = "this_is_a_wrong_url.com";
if (checkdnsrr($url, 'A')) 
{
    echo "Domain exists.";
}
else
{
     echo "Domain doesnot exists.";
}

ただし、無効なURLでもtrueを返します。

私は何が間違っているのですか?PHP5.3.5を使用しています

編集:このコードは、同じPHPバージョンのLinuxマシンで正常に機能しています。Windowsマシンでのみ無効な結果をもたらします。

4

4 に答える 4

6

一部のISPは、無効なドメインを独自の検索サーバーにリダイレクトします。TimeWarner/RoadRunnerはそのようなISPの1つです。コードは正常に機能しますが、ISPの検索サーバーに解決されないことを確認することをお勧めします。最初にgethostbynameを使用して無効なドメインをチェックし、次にそれを使用してチェックします。

if (checkdnsrr($url, 'A') && gethostbyname($url) != '204.232.137.207' && gethostbyname($url) !='66.152.109.110')

またはより良いです

if(checkdnsrr($url,'A') && !in_array(gethostbyname($url),gethostbynamel('this_is_a_wrong_url.com')))
于 2012-05-17T20:01:57.197 に答える
1

答えてくれてありがとう@aynber。それは私を大いに助けます。しかし、それは私にとって完全ではなかったと思います。メールドメインが有効かどうかを確認するための回答を少し変更しました。実際には、.co、.co.in、.inドメインでは機能していませんでした。だから、私はあなたの答えを少し拡張します:)

$email = trim($_GET['email']);

// take a given email address and split it into the username and domain.
list($userName, $mailDomain) = split("@", $email);
$tld = explode('.', $mailDomain,2)[1];//for php>=5.4.0
if(checkdnsrr($mailDomain,'A') && !in_array(gethostbyname($mailDomain),gethostbynamel('this_is_a_wrong_url_xx_xx_xx.' . $tld))) {  
echo "Domain exists.";  
} else { 
echo "Domain not exists.";  
}

@ aynber、答えは+1:)。

于 2014-02-10T07:52:05.310 に答える
0

これを試して

 $url = "this_is_a_wrong_url.com";
    if(checkdnsrr(($url),"A"))
{
    echo "Domain exists.";
}
else
{
     echo "Domain doesnot exists.";
}

だから$urlブレーキで

于 2012-05-17T19:36:33.870 に答える
-2

私はここで見つけました:

http://php.net/manual/en/function.checkdnsrr.php

変更ログ

バージョンの説明

5.3.0この機能はWindowsプラットフォームで利用できるようになりました。

5.2.4TXTタイプが追加されました。

5.0.0AAAAタイプが追加されました。

これは、Windowsのphp<5.3ではこの関数を呼び出せないことを意味します

于 2012-09-14T14:42:01.037 に答える