1. コードを簡略化しました。 (実際には不要な変数の定義は削除されています)
2. INTERNICから取得した情報は単純すぎるため、INTERNICからフィードバックされた情報内のWHOIS SERVERを基にさらにクエリを実行します。たとえば、YAHOO の詳しい情報は whois.networksolutions.com にあります。
class whois {
var $use_cache = 1;
var $FROM_CACHE=0; // システムに応じて設定します
var $port = 43;
var $MAXLEN = 100;
// 接続失敗後に自動的に再試行する場合は、
// 再試行回数を設定します $MAX_RETRIES
var $SLEEP_VAL = 1; 0;
var $FOUND = 0; データのバイト
var $WHOIS_SERVER;
// WHOIS SERVER との SOCKET 接続を開きます。
// デフォルトは whois.internic .net です
function connect ($server) {
$this->RETRY=0;
while($this->RETRY <= $this->MAX_RETRIES):
$ ptr = fsockopen、$ this&gt; port($ ptr);行単位で配列に入れる查 // 国際ドメイン名クエリ
Function rawlookup ($ Query, $ Server) {
IF (! $ Query):
Return ("")
$ ptr = $ This; - & GT; 接続 ($ Server );
if($ptr):
if(!ereg($query, "n$")):
$query .= "n" endif; fputs($ptr) , "$クエリ");
$i=0; $this->DATA_COUNT+=strlen(chop($array[$i]));
if(eregi( "一致しません", $array[$i]) || eregi ("エントリが見つかりません", $array[$i])):
$this->FOUND=0;
elseif(eregi( "WHOIS データベースがダウンしています",$array[$i])):
$this->ERROR++;
$this->FOUND=0;
elseif(eregi( "しばらく待ってからもう一度お試しください",$array[$i])):
$this->ERROR++;
$this->FOUND=0;
休憩;
endif;
if(eregi("Whois サーバー:",$array[$i])):
$this->NEW_WHOIS=trim(substr(trim($array[$i]),(strlen(trim($array[ $i]))-13)*(-1)));
$this->FURTHER_INFO=1;
endif;
$i++;
終わり。
fclose($ptr);
if($this->DATA_COUNT>$this->DATA_MIN):
return($array);
else:
$this->ERROR++;
endif;
else:
$this->ERROR++;
endif;
}
// 国内ドメイン名查询
function cnrawlookup ($query, $server) {
if(!$query):
return( "");
endif;
$ptr=$this->connect($server);
if($ptr):
if(!ereg($query, "n$")):
$query .= "n";
endif;
fputs($ptr, "$query");
$i=0;
$this->FOUND=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++;
$this->FOUND=0;
elseif(eregi( "しばらく待ってからもう一度お試しください",$array[$i])):
$this->ERROR++;
$this->FOUND=0;
休憩。
endif;
$i++;
終わり;
fclose($ptr);
if($this->DATA_COUNT>$this->DATA_MIN):
return($array);
else:
$this->ERROR++;
endif;
else:
$this->ERROR++;
エンドイフ;
}
};
$myWHOIS=new whois();
$thisname=$servername.$domainname;
// 国内ドメイン名または国际ドメイン名に基づくWHOIS SERVER
if (ereg(".cn$") ,$thisname))
{
$myWHOIS->WHOIS_SERVER="whois.cnnic.net.cn";
$array=$myWHOIS->cnrawlookup($thisname,$myWHOIS->WHOIS_SERVER);
}
else
{
$myWHOIS->WHOIS_SERVER="whois.internic.net";
//$myWHOIS->WHOIS_SERVER="whois.networksolutions.com";
$array=$myWHOIS->rawlookup($thisname ,$myWHOIS->WHOIS_SERVER);
}
echo "
$x | ";$array[$x]< /td>"; $x++; } echo " |
$x | ";$array_further[$x] | ";