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