用PHP查询域名状态whois的类
2018-09-07 12:38
  复制代码 代码如下:
<? 
classSearchDomain 
{ 
var$domain=; 
functionSetDomain($udomain) 
{ 
$this->domain=$udomain; 
} 
// 
//获取whois并分析域名状态 
//ok未被注册 
//非空值过期时间 
//空值未知 
// 
functionGetInfo() 
{ 
/* 
$dinfo=trim($this->GetWhois()); 
if($dinfo==)return; 
if(eregi(nomatch,$dinfo))returnok; 
//return$rs; 
*/ 
$wl=; 
$w_server=$this->GetServer(); 
if($w_server==)return; 
$fp=fsockopen($w_server,43,$errno,$errstr,30); 
if(!$fp) 
{ 
echo$errstr; 
return; 
} 
$out=$this->domain.\r\n; 
$out.=Connection:Close\r\n\r\n; 
fputs($fp,$out); 
while(!feof($fp)) 
{ 
$wl=fgets($fp,255); 
if(eregi(nomatch,$wl)) 
{ 
fclose($fp); 
returnok; 
} 
if(eregi(ExpirationDate,$wl)) 
{ 
$lines=split(:,$wl); 
$t=trim($lines[1]); 
$ts=split(,$t); 
$t=$ts[0]; 
if(ereg([^0-9-],$t)) 
{ 
$ts=split(-,$t); 
$t=$ts[2].-.$this->MonthToNum($ts[1]).-.$ts[0]; 
} 
fclose($fp); 
return$t; 
} 
} 
fclose($fp); 
return; 
} 
// 
//获得域名的整个whois信息 
// 
functionGetWhois() 
{ 
$wh=; 
$w_server=$this->GetServer(); 
if($w_server==)return; 
$fp=fsockopen($w_server,43,$errno,$errstr,30); 
if(!$fp) 
{ 
echo$errstr; 
return; 
} 
$out=$this->domain.\r\n; 
$out.=Connection:Close\r\n\r\n; 
fputs($fp,$out); 
while(!feof($fp)) 
{ 
$wh.=nl2br(fgets($fp,255)); 
} 
fclose($fp); 
return$wh; 
} 
// 
//输出当前域名的状态信息 
// 
functionPrintSta() 
{ 
$rs=$this->GetInfo(); 
if($rs==ok)echo$this->domain.未注册!<br/>\r\n; 
elseif($rs==)echo无法查询.$this->domain.状态!<br/>\r\n; 
elseecho$this->domain.已注册,到期时间:$rs<br/>\r\n; 
} 
// 
//获得whois查询服务器 
// 
functionGetServer() 
{ 
$udomain=substr($this->domain,-3); 
switch($udomain) 
{ 
casecom: 
break; 
casenet: 
$w_server=whois.internic.net; 
break; 
caseorg: 
break; 
casenfo: 
break; 
casebiz: 
break; 
$w_server=whois.nic.cc; 
break; 
caseedu: 
$w_server=whois.educause.net; 
break; 
casegov: 
$w_server=whois.nic.gov; 
break; 
break; 
default: 
$w_server=; 
} 
return$w_server; 
} 
// 
//英语的月份转为数字 
// 
functionMonthToNum($m) 
{ 
$m=strtolower($m); 
for($i=1;$i<=12;$i++) 
{ 
$tt=mktime(0,0,0,$i+1,0,2005); 
if($m==strtolower(strftime(%b,$tt))) 
{ 
if($i>9)return$i-1; 
elsereturn0.$i-1; 
} 
} 
} 
} 
$sd=newSearchDomain(); 
//查询域名是否被注册,等价于$sd->PrintSta(); 
$rs=$sd->GetInfo(); 
if($rs==ok)echo$sd->domain.未注册!<br/>\r\n; 
elseif($rs==)echo无法查询.$sd->domain.状态!<br/>\r\n; 
elseecho$sd->domain.已注册,到期时间:$rs<br/>\r\n; 
//获得域名的详细whois信息 
//echo$sd->GetWhois(); 
?>