WHOIS类的修改版


Posted in PHP onOctober 09, 2006

1、简化了代码。(其实就是去掉了一些用不着的变量的定义)
2、针对从INTERNIC检索到的信息过于简单,根据INTERNIC反馈的信息中的WHOIS SERVER进行进一步查询。比如,YAHOO在whois.networksolutions.com上有更详细的信息。

class whois {  

var $use_cache = 1;  
var $FROM_CACHE=0;  
var $cache_dir = "./"; // 根据你的系统自己设置

var $port = 43;  
var $MAXLEN = 100;  

// 如果你想在连接失败后自动重试,
// 设置重试次数 $MAX_RETRIES
var $MAX_RETRIES = 0;  
var $SLEEP_VAL = 1;  
var $RETRY = 0;  

var $FOUND = 0; // 查询没有结果,次值为0
var $ERROR = 0; // 查询过程中的出错次数
var $DATA_MIN = 8; // 我们至少应该获得8个字节的数据
var $DATA_COUNT = 0;  

var $WHOIS_SERVER;
var $NEW_WHOIS;
var $FURTHER_INFO = 0;

// 打开和WHOIS SERVER的SOCKET连接
// 默认的是 whois.internic.net  
function connect ($server) {
$this->RETRY=0;
while($this->RETRY <= $this->MAX_RETRIES):
$ptr = fsockopen($server, $this->port);  
if($ptr>0):  
$this->ERROR=0; // just in case we're on a retry  
return($ptr);  
else:  
$this->ERROR++;  
$this->RETRY++;  
sleep($this->SLEEP_VAL);  
endif;  
endwhile;  
}  

// 获取简单的查询结果,并以行为单位,放入数组
// 国际域名查询
function rawlookup ($query, $server) {

if(!$query):  
return( "");  
endif;

$ptr=$this->connect($server);

if($ptr):  
if(!ereg($query, "n$")):  
$query .= "n";  
endif;  
fputs($ptr, "$query");  
$i=0;  
$this->FOUND=1;  
while(!feof($ptr)):  
$array[$i]=fgets($ptr,$this->MAXLEN);  
$this->DATA_COUNT+=strlen(chop($array[$i]));  
if(eregi( "No match for", $array[$i]) || eregi ("No entries found", $array[$i])):  
$this->FOUND=0;  
elseif(eregi( "WHOIS database is down",$array[$i])):  
$this->ERROR++;  
$this->FOUND=0;  
elseif(eregi( "Please wait a while and try again",$array[$i])):  
$this->ERROR++;  
$this->FOUND=0;  
break;  
endif;  
if(eregi("Whois Server:",$array[$i])):
$this->NEW_WHOIS=trim(substr(trim($array[$i]),(strlen(trim($array[$i]))-13)*(-1)));
$this->FURTHER_INFO=1;
endif;
$i++;  
endwhile;  

fclose($ptr);  

if($this->DATA_COUNT>$this->DATA_MIN):
return($array);  
else:  
$this->ERROR++;  
endif;  
else:  
$this->ERROR++;  
endif;
}  

// 国内域名查询
function cnrawlookup ($query, $server) {  
if(!$query):  
return( "");  
endif;  

$ptr=$this->connect($server);  
if($ptr):  
if(!ereg($query, "n$")):  
$query .= "n";  
endif;  
fputs($ptr, "$query");  
$i=0;  
$this->FOUND=1;  
while(!feof($ptr)):  
$array[$i]=fgets($ptr,$this->MAXLEN);  
$this->DATA_COUNT+=strlen(chop($array[$i]));  
if(eregi( "No match for", $array[$i]) || eregi ("No entries found", $array[$i])):  
$this->FOUND=0;  
elseif(eregi( "WHOIS database is down",$array[$i])):  
$this->ERROR++;  
$this->FOUND=0;  
elseif(eregi( "Please wait a while and try again",$array[$i])):  
$this->ERROR++;  
$this->FOUND=0;  
break;  
endif;  
$i++;  
endwhile;  
fclose($ptr);  

if($this->DATA_COUNT>$this->DATA_MIN):
return($array);  
else:  
$this->ERROR++;  
endif;  
else:  
$this->ERROR++;  
endif;  
}  
};

$myWHOIS=new whois();

$thisname=$servername.$domainname;
// 根据国内域名或国际域名选择WHOIS SERVER
if (ereg(".cn$",$thisname))
{
$myWHOIS->WHOIS_SERVER="whois.cnnic.net.cn";
$array=$myWHOIS->cnrawlookup($thisname,$myWHOIS->WHOIS_SERVER);
}
else
{
$myWHOIS->WHOIS_SERVER="whois.internic.net";
//$myWHOIS->WHOIS_SERVER="whois.networksolutions.com";
$array=$myWHOIS->rawlookup($thisname,$myWHOIS->WHOIS_SERVER);
}

echo "
".$thisname."
";
echo "";
$x=0;
while ($x {
echo " $x ";
echo " $array[$x] ";
$x++;
}
echo "  
";

if (!ereg(".cn$",$thisname))
{
echo "
Furth infomation
";
$array_further=$myWHOIS->rawlookup($thisname,$myWHOIS->NEW_WHOIS);

echo "";
$x=0;
while ($x {
echo " $x ";
echo " $array_further[$x] ";
$x++;
}
echo "  
";
}

?>   

PHP 相关文章推荐
Email+URL的判断和自动转换函数
Oct 09 PHP
用php将任何格式视频转为flv的代码
Sep 03 PHP
PHP 一个页面执行时间类代码
Mar 05 PHP
php file_exists 检查文件或目录是否存在的函数
May 10 PHP
php url地址栏传中文乱码解决方法集合
Jun 25 PHP
PHPer 需要了解的 5 个 Composer 小技巧
Aug 18 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
Redis构建分布式锁
Mar 28 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
实现php删除链表中重复的结点
Sep 27 PHP
Yii框架日志操作图文与实例详解
Sep 09 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 PHP
很实用的一个完整email发送程序
Oct 09 #PHP
用PHP和ACCESS写聊天室(三)
Oct 09 #PHP
对javascript和select部件的结合运用
Oct 09 #PHP
用PHP和ACCESS写聊天室(二)
Oct 09 #PHP
用PHP和ACCESS写聊天室(一)
Oct 09 #PHP
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 #PHP
不用数据库的多用户文件自由上传投票系统(3)
Oct 09 #PHP
You might like
php常用表单验证类用法实例
2015/06/18 PHP
ThinkPHP安装和设置
2015/07/27 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
JavaScript关于select的相关操作说明
2010/01/13 Javascript
innerHTML在IE中报错解决方案
2014/12/15 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
详解js中class的多种函数封装方法
2016/01/03 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
jQuery的ajax下载blob文件
2016/07/21 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
CAD制图人员的自荐信
2014/02/07 职场文书
寄语学生的话
2014/04/10 职场文书
社区学习雷锋活动总结
2014/04/25 职场文书
集体生日活动方案
2014/08/18 职场文书
共青团员自我评价范文
2014/09/14 职场文书
办理房产证委托书
2014/09/18 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
2015年加油站工作总结
2015/05/13 职场文书
JavaScript 数组去重详解
2021/09/15 Javascript
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js