用PHP查询域名状态whois的类

所属分类: 网络编程 / PHP编程 阅读数: 1113
收藏 0 赞 0 分享
复制代码 代码如下:

<?
class SearchDomain
{
 var $domain="";
 function SetDomain($udomain)
 {
 $this->domain = $udomain;
 }
 //
 // 获取whois并分析域名状态
 // ok 未被注册
 // 非空值 过期时间
 // 空值 未知
 //
 function GetInfo()
 {
 /*
 $dinfo = trim($this->GetWhois());
 if($dinfo=="") return "";
 if(eregi("no match",$dinfo)) return "ok";
 //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("no match",$wl))
 {
 fclose($fp);
 return "ok";
 }
 if(eregi("Expiration Date",$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信息
 //
 function GetWhois()
 {
 $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;
 }
 //
 //输出当前域名的状态信息
 //
 function PrintSta()
 {
 $rs = $this->GetInfo();
 if($rs=="ok") echo $this->domain." 未注册!<br/>\r\n";
 else if($rs=="") echo "无法查询 ".$this->domain." 状态!<br/>\r\n";
 else echo $this->domain." 已注册,到期时间:$rs<br/>\r\n";
 }
 //
 //获得 whois 查询服务器
 //
 function GetServer()
 {
 $udomain=substr($this->domain,-3);
 switch($udomain)
 {
 case "com":
 $w_server="whois.internic.net";
 break;
 case "net":
 $w_server="whois.internic.net";
 break;
 case "org":
 $w_server="whois.pir.org";
 break;
 case "nfo":
 $w_server="whois.afilias.info";
 break;
 case "biz":
 $w_server="whois.biz";
 break;
 case ".cc":
 $w_server="whois.nic.cc";
 break;
 case "edu":
 $w_server="whois.educause.net";
 break;
 case "gov":
 $w_server="whois.nic.gov";
 break;
 case ".cn":
 $w_server="whois.cnnic.net.cn";
 break;
 default:
 $w_server="";
 }
 return $w_server;
 }
 //
 //英语的月份转为数字
 //
 function MonthToNum($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;
 else return "0".$i-1;
 }
 }
 }
}

$sd = new SearchDomain();
$sd->SetDomain("job-sky.com");

//查询域名是否被注册,等价于 $sd->PrintSta(); 
$rs = $sd->GetInfo();
if($rs=="ok") echo $sd->domain." 未注册!<br/>\r\n";
else if($rs=="") echo "无法查询 ".$sd->domain." 状态!<br/>\r\n";
else echo $sd->domain." 已注册,到期时间:$rs<br/>\r\n";

//获得域名的详细whois信息
//echo $sd->GetWhois();
?>

更多精彩内容其他人还在看

Python中使用django form表单验证的方法

这篇文章主要介绍了Python中使用django form表单验证的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

php文件管理基本功能简单操作

这篇文章主要为大家详细介绍了php文件管理基本功能简单操作的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

php常用数组函数实例小结

这篇文章主要介绍了php常用数组函数,结合实例形式总结分析了php常用数组函数array_merge、array_slice及array_map的功能与使用技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

详解ThinkPHP3.2.3验证码显示、刷新、校验

本篇文章主要介绍了ThinkPHP3.2.3验证码显示、刷新、校验 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
收藏 0 赞 0 分享

php常用正则函数实例小结

这篇文章主要介绍了php常用正则函数,结合实例形式总结分析了php正则表达式常用函数,包括preg_replace、preg_match及preg_match_all函数的功能、使用方法与相关注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

php常用字符函数实例小结

这篇文章主要介绍了php常用字符函数,结合实例形式总结分析了php常用字符函数substr、preg_match、strpos、dirname及str_split功能、用法与相关注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP实现的XML操作类【XML Library】

这篇文章主要介绍了PHP实现的XML操作类,涉及php针对数组、xml的转换、序列化、反序列化等相关操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

详解thinkphp实现excel数据的导入导出(附完整案例)

本篇文章主要介绍了thinkphp实现excel数据的导入导出,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
收藏 0 赞 0 分享

PHP实现截取中文字符串不出现?号的解决方法

这篇文章主要介绍了PHP实现截取中文字符串不出现?号的解决方法,涉及php字符串遍历及编码转换等相关操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

微信公众号模板消息群发php代码示例

这篇文章主要为大家详细介绍了微信公众号模板消息群发php代码示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多