用PHP查询域名状态whois的类


Posted in PHP onNovember 25, 2006
<? 
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(); 
?>
PHP 相关文章推荐
文件上传类
Oct 09 PHP
php addslashes 函数详细分析说明
Jun 23 PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
Feb 16 PHP
PHP目录函数实现创建、读取目录教程实例
Jan 13 PHP
基于Zend的Captcha机制的应用
May 02 PHP
php获取url参数方法总结
Nov 13 PHP
将FCKeditor导入PHP+SMARTY的实现方法
Jan 15 PHP
php实现将数组转换为XML的方法
Mar 09 PHP
解决nginx不支持thinkphp中pathinfo的问题
Jul 21 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
Jan 19 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
生成静态页面的PHP类
Nov 25 #PHP
PHP静态类
Nov 25 #PHP
PHP文本操作类
Nov 25 #PHP
小偷PHP+Html+缓存
Nov 25 #PHP
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 #PHP
如何使用PHP中的字符串函数
Nov 24 #PHP
PHP常用代码
Nov 23 #PHP
You might like
PHP4与PHP5的时间格式问题
2008/02/17 PHP
用PHP与XML联手进行网站编程代码实例
2008/07/10 PHP
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
php 文件上传类代码
2011/08/06 PHP
php中常用字符串处理代码片段整理
2011/11/07 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
innerText和textContent对比及使用介绍
2013/02/27 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
javascript相关事件的几个概念
2015/05/21 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
收集前端面试题之url、href、src
2018/03/22 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
[01:04:09]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第二场 2月2日
2021/03/11 DOTA
python 实现堆排序算法代码
2012/06/05 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
python函数不定长参数使用方法解析
2019/12/14 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
毕业生的求职信范文分享
2013/12/04 职场文书
学校四群教育实施方案
2014/06/12 职场文书
英语专业自荐书
2014/06/13 职场文书
2014年社区妇联工作总结
2014/12/02 职场文书
预备党员个人总结
2015/02/14 职场文书
初中重阳节活动总结
2015/05/05 职场文书
关于保护环境的建议书
2019/06/24 职场文书