用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 相关文章推荐
Optimizer与Debugger兼容性问题的解决方法
Dec 01 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
ThinkPHP中使用ajax接收json数据的方法
Dec 18 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
Mar 26 PHP
PHP实现限制IP访问的方法
Apr 20 PHP
PHP实现的观察者模式实例
Jun 21 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
PHP XML Expat解析器知识点总结
Feb 15 PHP
PHP中rename()函数的妙用讲解
Feb 28 PHP
PHP使用PDO 连接与连接管理操作实例分析
Apr 21 PHP
详解php中流行的rpc框架
May 29 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
php empty函数判断mysql表单是否为空
2010/04/12 PHP
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
PHP PDOStatement::bindColumn讲解
2019/01/30 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
js循环map 获取所有的key和value的实现代码(json)
2018/05/09 Javascript
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
iostream与iostream.h的区别
2015/01/16 面试题
项目合作协议书范本
2014/04/16 职场文书
保险专业求职信
2014/07/07 职场文书
2014年幼儿园重阳节活动方案
2014/09/16 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
感谢信怎么写
2015/01/21 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
Nginx跨域问题解析与解决
2022/08/05 Servers