Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  php  >  正文 PHP IP Whois查询的实现代码

PHP IP Whois查询的实现代码

发布时间:2015-09-25   编辑:www.jquerycn.cn
用php实现IP whois查询,操作方法:打开一个到whois服务器的43端口的连接,然后发送要查询的域名和一个回车换行。如果要查询多个域名,请用空格分开然后从sokect中读取结果。最后服务器将自动断开连接。

具体实现代码如下。

1、验证IP(用 ip2long代替 ereg)
2、向 whois.arin.net查询,如果数据库中没有相关信息,会给出一个Referral Server的URL,格式如下
ReferralServer:
然后根据此信息,继续查询。

1、whoisip.php
 

复制代码 代码示例:

<?php
include_once "lang.inc.php";

$IP = isset($_GET['ip'])?$_GET['ip']:'blank';
if (-1 === ip2long($ip))
die(str_replace('%IP%', $IP, $Text['ip_invalid']));

echo GetWhois($IP);

function GetWhois($IP)
{
global $Text;
$rootwhois = 'whois.arin.net';
$buffer = str_replace('%SERVER%', $rootwhois, $Text['sock_connect']);
$buffer1 = ReadSocket($rootwhois,$IP);
if ($buffer1 !== '')
{
$whois = SubStrByTag("ReferralServer: whois://","\n",$buffer1);
//remove port number ":43";
if ( ($pos=strpos($whois,":")) !== FALSE)
{
$whois = substr($whois, 0,$pos);
}
if ($whois !== '')
{
$buffer .= str_replace('%SERVER%', $whois, $Text['sock_connect']);
$buffer .= ReadSocket($whois,$IP);
}
else
{
$buffer .= $buffer1;
}
}
return nl2br($buffer);
}

function SubStrByTag($firstTag,$secondTag,&$longStr)
{
$firstPos = strpos ($longStr,$firstTag);
$ret = '';
if ($firstPos !== FALSE)
{
$secondPos = strpos ($longStr,$secondTag,$firstPos);
if ($secondPos !== FALSE)
{
$firstPos += strlen($firstTag);
$ret = substr($longStr,$firstPos,$secondPos-$firstPos);
}
}
return $ret;
}

function ReadSocket($whois,$ip)
{
global $Text;
$buffer = '';
if (!$sock = fsockopen( $whois, 43, $errNum, $errStr, 20))
{
$buffer = str_replace('%SERVER%', $whois, $Text['sock_fail']);
}
else
{
fputs($sock,"$ip\n");
//$buffer = fread($sock, 8192);
while(!feof($sock)) $buffer.=fgets($sock, 8192);
fclose($sock);
}
return $buffer;
}

?>

2、语言文件 lang.inc.php
 

复制代码 代码示例:
<?php
$Text = Array(
'ip_invalid'=>'I want to get a valid IP, but it is [%IP%].',
'sock_connect'=>'Ask %SERVER% ...
',
'sock_fail'=>'Cannot connect to the host:%SERVER%'
);
?>

是不是很简单呢?建议大家亲自测试下,体验一下类似万网那样的查询效果,相当刺激的,哈哈。

您可能感兴趣的文章:
PHP IP Whois查询的实现代码
用PHP实现标准的IPWhois查询
PHP whois客户端查询的实现代码
域名whois查询函数(万网和新网
c# 域名whois查询的实现代码
PHP通过IP获取地理位置的代码
IPwhois查询,域名whois查询
php 获取用户真实IP与地理位置(淘宝IP接口)的实现代码
php通过IP获取地理位置的实例参考
php 实现dns域名查询的方法详解(图文)

[关闭]