用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 相关文章推荐
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
Aug 08 PHP
php模拟js函数unescape的函数代码
Oct 20 PHP
PHP取余函数介绍MOD(x,y)与x%y
May 15 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
Jun 10 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
php mongodb操作类 带几个简单的例子
Aug 25 PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 PHP
PHP isset empty函数相关面试题及解析
Dec 11 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
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
JS定义回车事件(实现代码)
2013/07/08 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
Vue2.x-使用防抖以及节流的示例
2021/03/02 Vue.js
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
Python版的文曲星猜数字游戏代码
2013/09/02 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
python sort、sort_index方法代码实例
2019/03/28 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
利用python汇总统计多张Excel
2020/09/22 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
机械专业个人求职自荐信格式
2013/09/21 职场文书
大学系主任推荐信范文
2013/12/24 职场文书
致百米运动员广播稿
2014/01/29 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
护士2014年终工作总结
2014/11/11 职场文书
个人租房协议书
2014/11/28 职场文书
应急管理工作总结2015
2015/05/04 职场文书
在校证明模板
2015/06/17 职场文书