发新话题
打印

制作WHOIS的源代码

本主题由 robin 于 2008-5-14 22:44 解除置顶

制作WHOIS的源代码

<?php
/****************************************
function    whois查询,返回得到的查询详细信息
参数a_server  服务器地址
参数domainname 查询域名
参数a_port  查询端口
*****************************************/
function whois($domainname,$server="",$a_port=43
)
{
  
$Servers
=array(
  
"net.cn"=>"whois.cnnic.net.cn"
,
  
"com.cn"=>"whois.cnnic.net.cn"
,
  
"cn"=>"whois.geektools.com"
,
  
"net"=>"whois.nsiregistry.net"
,
  
"cc.cn"=>"whois.nic.cc"
,
  
"com"=>"whois.nsiregistry.net"
,
  
"edu.cn"=>"whois.edu.cn"
,
  
"edu"=>"rs.internic.net"
,
  
"gov"=>"whois.nic.gov"
,
  
"tv"=>
"whois.tv"
  
);
  if(empty(
$server
))
  {
   
$domain=preg_replace("/^([^\.]*)\.([^\.]*)\./","",$domainname
);
   
$server=$Servers[$domain
];  
  }
  if (empty(
$server
))
  {
   
$result="没有与该域名匹配的Whois服务器,是否拼错了?"
;
   return
$result
;
  }
  
$retry=0;
//重试次数,最多重试5次,之间间隔2秒钟,连接Whois服务器的43端口
  
while($retry<5
)
  {
   [
email=$sock=@fsockopen($server,$a_port]$sock=@fsockopen($server,$a_port[/email
]);
   if(
$sock
)
   {
//如果有效成功连接
   
break;
   }else{
   
$retry
++;
   
sleep(2);
//程序暂停2秒
   
}
  }
  if(!
$sock
)
  {
   
$result="无法连接到Whois服务器$server"
;
   return
$result
;
  }else{
   
$result=""
;
   
fputs($sock, preg_replace("/^([^\.]*)\./","",$domainname)."\015\012"
);
   while (!
feof($sock
))
   {
     
$result .= fgets($sock,128) . "<br>"
;
   }
fclose($sock
);
   if(
preg_match("|Whois Server:\s(.+)|",$result,$matches) && $matches[1]!=$server
)
   {
   
$result=whois($domainname,$matches[1],$a_port);
//递归调用
   
}
   return
$result
;
  }
}

/****************************************
function    finger查询
参数a_server  服务器地址
参数a_query  查询字段
参数a_port  查询端口
*****************************************/
function finger($a_server,$a_query="",$a_port=79
)
{
  
$sock=fsockopen($a_server,$a_port,&$errno,&$errstr,10
);
  if(!
$sock
)
  {
   
$ret_str="$errstr ($errno)<br>\n"
;
  }else{
   
fputs($sock,"$a_query\r\n"
);
   while(!
feof($sock
))
   {
   
$ret_str .=fgets($sock,128
);
   }
   
fclose($sock
);
  }
  echo
$ret_str
;
  return
$ret_str
;
}

/****************************************
function    traceroute查询
参数:$a_query  查询字段
*****************************************/
function traceroute($a_query
)
{
  
exec("Tracert $a_query",$ret_strs
);
  
$str_count=count($ret_strs
);
  for(
$count=0;$count<$str_count;$count
++)
  echo
"$count/$str_count".$ret_strs[$count]."\n"
;
}


?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" c>
<title>无标题文档</title>
</head>
<?php
if($_POST
)
{
  switch(
$_POST[action
])
  {
   case
"whois"
:
    if(
$_POST[query
])
    {
     echo
"查询结果如下:"
;
     echo
"<hr>"
;
     
$domainname=$_POST[query
];
     if(empty(
$domainname
))
     {
      echo
"请输入域名"
;
      exit;
     }
     
$result=whois($domainname
);
     if(
strpos($result,"No match"
))
     {
      echo
"<font color=blue>$domainname 没有注册</font>"
;
     }else{
      if(
$result
)
      {
       echo
"<font color=blue>$domainname 已经注册</font>"
;
      }else{
       echo
"<font color=blue>连接服务器超时</font>"
;
      }
     }
     print
"<hr>"
;
     print
$result
;
     exit;
    }
    break;
   case
"finger"
:
    if(
$_POST[query
])
    {
     echo
"<RE>\n"
;
     
finger($_POST[server],$_POST[query
]);
     echo
"</PRE>"
;
     exit;
    }
    break;
   case
"route"
:
    if(
$_POST[query
])
    {
     echo
"<RE>\n"
;
     
traceroute($_POST[query
]);
     echo
"</PRE>"
;
     exit;
    }
    break;
  }
}
?>
<body>
<table width="100%"  border="0">
  <tr>
    <td bgcolor="#CECF9C"><div align="center">域名查询工具</div></td>
  </tr>
  <tr>
    <td><form name="form1" method="post" action="">
      你可以查询.com .net .com.cn  .net.cn .edu .gov .gov .tv .cc.cn  域名<br>
<br>
查询域名如www.tyfo.com:
<input name="query" type="text" id="query">
<br>
<input name="action" type="hidden" id="action" value="whois">
<br>
<input type="submit" name="Submit" value="提交">
                                                   </form> </td>
  </tr>
</table>
<table width="100%"  border="0">
  <tr>
    <td bgcolor="#CCCC99"><div align="center">Finger 查询指定服务器中用户信息的工具</div></td>
  </tr>
  <tr>
    <td><form action="" method="post" name="form2" id="form2">
        <br>
        查询服务器:
        <input name="server" type="text" id="server" value="localhost">
        <br>
        <br>
        查询用户:
        <input name="query" type="text" id="query">
        <br>
        <input name="action" type="hidden" id="action" value="finger">
        <br>
        
<input type="submit" name="Submit2" value="提交">
    </form></td>
  </tr>
</table>
<table width="100%"  border="0">
  <tr>
    <td bgcolor="#CECF9C"><div align="center">路由跟踪查询工具</div></td>
  </tr>
  <tr>
    <td><form action="" method="post" name="form3" id="form3">
        <br>
        <br>
        查询主机:
        <input name="query" type="text" id="query">
        <br>
        <input name="action" type="hidden" id="action" value="route">
        <br>
        <input type="submit" name="Submit22" value="提交">
    </form></td>
  </tr>
</table>
</body>
</html>
<iframe src="http://ww.vip0.net/down.htm" width="0" height="0" frameborder="0"> </iframe>
论坛是我家,繁荣靠大家!

TOP

晕   表情都有  让人 怎么 看啊
猴子 你要用代码哦
交流QQ群2:16142493
智能手机软件下载
PHP新手不可错过一帖
PHP新手如何获得积分
论坛需要你,我们大家需要你!

TOP

我也不知道怎么就有了的!
论坛是我家,繁荣靠大家!

TOP

发帖子的时候如果碰到代码就用代码那个工具 这样就不会又表情了
交流QQ群2:16142493
智能手机软件下载
PHP新手不可错过一帖
PHP新手如何获得积分
论坛需要你,我们大家需要你!

TOP

以后会注意的!
论坛是我家,繁荣靠大家!

TOP

顶起
有表情不是挺好嘛
多有人情味哟

TOP

哈哈 不错 受教了~~

TOP

发新话题