|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
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 "<h2 align=center>".$thisname."</h2>"; echo "<table>"; $x=0; while ($x<count($array)) { echo "<tr><td>$x</td>"; echo "<td>$array[$x]</td>"; $x++; } echo "</table>"; if (!ereg(".cn$",$thisname)) { echo "<h2 align=center>Furth infomation</h2>"; $array_further=$myWHOIS->rawlookup($thisname,$myWHOIS->NEW_WHOIS); echo "<table>"; $x=0; while ($x<count($array_further)) { echo "<tr><td>$x</td>"; echo "<td>$array_further[$x]</td>"; $x++; } echo "</table>"; } ?> 返回类别: 教程 上一教程: PHP 编码规范(3) 下一教程: 怎样校验输入的日期为合法的日期?这里有一个例子(checkdate.php3) 您可以阅读与"WHOIS类的修改版。"相关的教程: · 测试已经无误,重新发布的修改后的分页类,附点说明 · 用PHP实现标准的IP Whois查询 · Pattern Modifiers - 规则表达式的修饰符 · 如何修改Apache返回的头部信息 · 第七节--类的静态成员 -- Classes and Objects in PHP5 [7] |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |