1. コードを簡略化しました。 (実際には、いくつかの不要な変数の定義が削除されています)
2. INTERNIC から取得した情報は単純すぎるため、INTERNIC からフィードバックされた情報内の WHOIS SERVER に基づいてさらにクエリが実行されます。たとえば、YAHOO には、whois.networksolutions.com に詳細な情報があります。
class whois {
var $use_cache = 1;
var $FROM_CACHE=0; // システムに応じて設定します
var $port = 43;
// 接続失敗後に自動的に再試行する場合は、
// 再試行回数を設定します $MAX_RETRIES
var $MAX_RETRIES = 0;
var $RETRY = 0;
var $FOUND = 0; ; // クエリには結果がありません。時間値は 0 です
var $ERROR = 0; // クエリ中のエラーの数
var $DATA_MIN = 8 // 少なくとも 8 バイトのデータを取得する必要があります
var $DATA_COUNT = 0;
var $WHOIS_SERVER;
var $FURTHER_INFO = 0;
// デフォルトは whois.internic.net です。 {
$ this->RETRY=0;
while($this->RETRY <= $this->MAX_RETRIES):
$ptr = fsockopen($server, $this->port); ($ptr> ;0):
$this->ERROR=0; // 再試行中です
return($ptr);
$this->ERROR++; >RETRY++ ;
sleep($this->SLEEP_VAL);
endif;
}
// 国際ドメイン名クエリ
function ( $query, $server) {
if(!$query):
endif;
$ptr=$this->
if($ptr):
if( !ereg($query, "n$")):
$query .= "n";
fputs($ptr, "$query"); =1;
while(!feof($ptr)):
$array[$i]=fgets($ptr,$this->MAXLEN);
$this->DATA_COUNT+=strlen(chop($array[ $i] ));
if(eregi( "一致しません", $array[$i]) || eregi ("エントリが見つかりません", $array[$i])):
$this->FOUND =0;
elseif(eregi( "WHOIS データベースがダウンしています",$array[$i])):
$this->ERROR++;
elseif( "お待ちくださいしばらくしてから再試行してください",$array[$i])):
$this->ERROR++;
$this->FOUND=0;
break;
endif;
if(eregi("Whois サーバー:" ,$array [$i])):
$this->NEW_WHOIS=trim(substr(trim($array[$i]),(strlen(trim($array[$i])))-13)* (-1) ));
$this->FURTHER_INFO=1;
fclose($ptr); ):
return ($array);
else:
$this->ERROR++
}
//国内ドメイン名クエリ
関数$query, $server ) {
if(!$query):
endif;
$ptr=$this->connect($server); !ereg($query , "n$")):
$query .= "n";
fputs($ptr, "$query");
$this-> =1;
while (!feof($ptr)):
$array[$i]=fgets($ptr,$this->MAXLEN);
$this->DATA_COUNT+=strlen(chop($array[ $i])) ;
if(eregi( "一致しません", $array[$i]) || eregi ("エントリが見つかりません", $array[$i])):
$this->FOUND =0;
elseif (eregi( "WHOIS データベースがダウンしています",$array[$i])):
$this->ERROR++;
elseif( "お待ちくださいしばらくしてから再試行してください ",$array[$i])):
$this->ERROR++;
$this->FOUND=0;
break;
endif;
$i++;
endwhile;
fclose( $ptr);
if($this->DATA_COUNT>$this->DATA_MIN):
else:
$this->ERROR++;
else:
$this- >ERROR++;
}
};
$myWHOIS=new whois();
// 国内ドメイン名または国際ドメイン名に基づいて WHOIS サーバーを選択します(".cn$",$ thisname))
{
$myWHOIS->WHOIS_SERVER="whois.cnnic.net.cn";
$array=$myWHOIS->cnrawlookup($thisname,$myWHOIS->; WHOIS_サーバー);
else
{
$myWHOIS->WHOIS_SERVER="whois.internic.net"
//$myWHOIS->WHOIS_SERVER="whois.networksolutions.com";
$array=$myWHOIS->rawlookup($ thisname,$myWHOIS->WHOIS_SERVER);
}
".$thisname."
echo ""
while ($x {
echo " $x ";
echo " $array[$x] ";
$x++;
echo "
if (!ereg(".cn$",$thisname))
{
追加情報
"; $array_further=$myWHOIS->rawlookup($thisname,$myWHOIS->NEW_WHOIS);
echo "";
$x=0;
while ($x {
echo " $x ";
echo " [$x] ";
$x++;
}
echo "
";
}
?>
上記では、www.haoyisheng.com のコンテンツを含む、www.haoyisheng.com の WHOIS クラスの修正版を紹介しています。PHP チュートリアルに興味のある友人の役に立つことを願っています。