>  기사  >  백엔드 개발  >  www.haoyisheng.com WHOIS 클래스 수정 버전

www.haoyisheng.com WHOIS 클래스 수정 버전

WBOY
WBOY원래의
2016-07-29 08:34:281213검색

1. 코드를 단순화했습니다. (실제로 일부 불필요한 변수의 정의는 제거되었습니다.)
2. INTERNIC에서 검색한 정보가 너무 단순하기 때문에 INTERNIC에서 피드백한 정보 중 WHOIS SERVER를 기준으로 추가 쿼리를 진행합니다. 예를 들어, YAHOO는 whois.networksolutions.com에서 더 자세한 정보를 제공합니다.
class whois {
var $use_cache = 1;
var $FROM_CACHE=0;
var $cache_dir = "./" // 시스템에 따라
var $port를 설정합니다. = 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입니다.
function connect ($server) {
$ this->RETRY= 0;
while($this->RETRY <= $this->MAX_RETRIES):
$ptr = fsockopen($server, $this->port)
if($ptr> ;0):
$this->ERROR=0; // 재시도할 경우를 대비해
return($ptr)
else:
$this->ERROR ;
$this->RETRY ;
sleep($this->SLEEP_VAL)
endwhile; 간단한 쿼리 결과를 행 단위로 배열에 담는다
// 국제 도메인 이름 쿼리
function rawlookup ($query, $server) {
if(!$query):
return ( "");
endif;
$ptr=$this->connect($server)
if($ptr):
if(!ereg($query, "n$) ")):
$ 쿼리 .= "n";
endif;
fputs($ptr, "$query");
$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->ERROR
$this-> FOUND=0 ;
elseif(eregi( "잠깐 기다렸다가 다시 시도하세요.",$array[$i])):
$this->ERROR
$this->FOUND= 0;
break; $i]),(strlen(trim($array[$i]))-13)*(-1)))
$this->FURTHER_INFO=1; >endif;
$ i ;
fclose($ptr)
if($this->DATA_COUNT>$this->DATA_MIN) ;
else:
$this->ERROR ;
endif
else:
$this->ERROR 함수 cnrawlookup($query, $server) {
(!$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 ("항목이 없습니다. found", $array[$i])):
$this->FOUND=0;
elseif(eregi( "WHOIS 데이터베이스가 다운되었습니다. ",$array[$i])):
$this->ERROR ;
$this->FOUND=0;
elseif(eregi( "잠깐 기다렸다가 다시 시도하세요.", $array[$i])):
$this ->ERROR ;
$this->FOUND=0;
$i
endwhile; if($this->DATA_COUNT>$this->DATA_MIN):
return($array)
else:
$this ->ERROR
endif; :
$this->ERROR ;
endif;
$thisname=$servername.$domainname;
// 국내 도메인 이름 또는 해외 도메인 이름을 기준으로 WHOIS SERVER를 선택합니다.
ereg(".cn$",$thisname))
{
$myWHOIS->WHOIS_SERVER="whois.cnnic.net.cn"
$array=$myWHOIS->cnrawlookup($ 이 이름,$myWHOIS->WHOIS_SERVER
}
그 외
{
$myWHOIS->WHOIS_SERVER="whois.internic.net"
//$myWHOIS->WHOIS_SERVER="whois.networksolutions.com"
$ array=$myWHOIS->rawlookup($thisname,$myWHOIS->WHOIS_SERVER)
}
echo "
".$thisname."
"
echo "";
$x=0;
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 " ;
echo " $array_further[$x] ";
$x
}
echo "
"

위 내용은 www.haoyisheng.com의 내용을 포함하여 www.haoyisheng.com의 WHOIS 클래스 수정 버전을 소개한 것입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

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