>  기사  >  백엔드 개발  >  PHP의 WHOIS 클래스(수정된 버전)

PHP의 WHOIS 클래스(수정된 버전)

WBOY
WBOY원래의
2016-08-08 09:34:041104검색

1. 코드를 단순화했습니다. (실제로는 사용되지 않는 일부 변수의 정의만 제거합니다.)
2. INTERNIC에서 검색한 정보가 너무 단순하므로 INTERNIC에서 피드백한 정보 중 WHOIS SERVER를 기반으로 추가 쿼리를 수행합니다. 예를 들어, YAHOO는 whois.networksolutions.com에서 더 자세한 정보를 제공합니다.

클래스 후이즈 {

var $use_cache = 1
var $FROM_CACHE=0; var $cache_dir = "./"; // 시스템에 맞게 설정하세요

var $포트 = 43
var $MAXLEN = 100

// 연결 실패 후 자동으로 재시도하고 싶다면
//재시도 횟수 설정 $MAX_RETRIES
var $MAX_RETRIES = 0
var $SLEEP_VAL = 1
var $RETRY = 0

var $FOUND = 0; // 쿼리에 결과가 없으며 보조 값은 0입니다.
var $ERROR = 0; // 쿼리 중 오류 수
var $DATA_MIN = 8; // 최소 8바이트의 데이터를 얻어야 합니다
var $DATA_COUNT = 0

var $WHOIS_SERVER
var $NEW_WHOIS
var $FURTHER_INFO = 0


// WHOIS SERVER와 SOCKET 연결을 엽니다.
// 기본값은 whois.internic.net
함수 연결($server) {
$this->재시도=0
while($this->RETRY <= $this->MAX_RETRIES):
$ptr = fsockopen($server, $this->port)
if($ptr>0):
$this->ERROR=0; // 재시도할 경우를 대비해
반환($ptr)
그 외:
$this->오류++
$this->재시도++
sleep($this->SLEEP_VAL)
종료

}

// 간단한 쿼리 결과를 얻어서 행 단위로 배열에 담는다
// 국제 도메인 이름 쿼리
함수 rawlookup($query, $server) {

if(!$쿼리):
반환(""); 종료

$ptr=$this->연결($서버)

if($ptr):
if(!ereg($query, "n$")):
$쿼리 .= "n"
종료
fputs($ptr, "$쿼리")
$i=0
$this->FOUND=1
동안(!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->오류++
$this->FOUND=0
elseif(eregi( "잠깐 기다렸다가 다시 시도하십시오.",$array[$i])):
$this->오류++
$this->FOUND=0
휴식
종료
if(eregi("Whois 서버:",$array[$i])):
$this->NEW_WHOIS=trim(substr(trim($array[$i]),(strlen(trim($array[$i]))-13)*(-1)))
$this->FURTHER_INFO=1
종료
$i++


fclose($ptr)

if($this->DATA_COUNT>$this->DATA_MIN):
반환($배열)
그 외:
$this->오류++
종료
그 외:
$this->오류++
종료
}


// 국내 도메인 이름 쿼리
함수 cnrawlookup($query, $server) {
if(!$쿼리):
반환(""); 종료

$ptr=$this->연결($서버)
if($ptr):
if(!ereg($query, "n$")):
$쿼리 .= "n"
종료
fputs($ptr, "$쿼리")
$i=0
$this->FOUND=1
동안(!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->오류++
$this->FOUND=0
elseif(eregi( "잠깐 기다렸다가 다시 시도하십시오.",$array[$i])):
$this->오류++
$this->FOUND=0
휴식
종료
$i++

fclose($ptr)

if($this->DATA_COUNT>$this->DATA_MIN):
반환($배열)
그 외:
$this->오류++;  
종료;  
그 외:  
$this->오류++;  
종료;  
}  
};



$myWHOIS=새로운 후이즈();

$thisname=$서버이름.$도메인이름;
// 根据國内域name或國际域name选择WHOIS SERVER
if (ereg(".cn$",$thisname))
{
$myWHOIS->WHOIS_SERVER="whois.cnnic.net.cn";
$array=$myWHOIS->cnrawlookup($thisname,$myWHOIS->WHOIS_SERVER);
}
그렇지 않으면
{
$myWHOIS->WHOIS_SERVER="whois.internic.net";
//$myWHOIS->WHOIS_SERVER="whois.networksolutions.com";
$array=$myWHOIS->rawlookup($thisname,$myWHOIS->WHOIS_SERVER);
}



에코 "
".$이 ​​이름."
";
에코 "";
$x=0;
동안($x {
에코 " $x ";
echo " $array[$x] ";
$x++;
}
에코 "  
";

if (!ereg(".cn$",$thisname))
{
에코 "
추가 정보
";
$array_further=$myWHOIS->rawlookup($thisname,$myWHOIS->NEW_WHOIS);

에코 "";
$x=0;
동안($x {
에코 " $x ";
echo " $array_further[$x] ";
$x++;
}
에코 "  
";
}

?>   

以上就介绍了php中的WHOIS类(修改版), 包括了WHOIS类容, 希望对PHP教程有兴趣的朋友有所帮助.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.