用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();
?>