|
|
|
| нашет тут на форуме скрипт whois/
но мне не все данные нужны. а только часть... вот что я сделал:
можно ли сделать как-нибудь по другом?
<center>
<form method=post>
<input type=text name=ip size=35>
<input type=submit value='Введите IP-адрес'>
</form>
</center>
<?php
if(!empty($_POST['ip']))
$result = whois("whois.arin.net",$_POST['ip']);
foreach($result as $val)
{
@list($info_A, $info_B) = @explode(':',$val,2);
if(strcasecmp('inetnum', trim($info_A)) == 0){@define('inetnum',trim($info_B));}
if(strcasecmp('netname', trim($info_A)) == 0){@define('netname',trim($info_B));}
if(strcasecmp('descr', trim($info_A)) == 0){@define('descr',trim($info_B));}
if(strcasecmp('country', trim($info_A)) == 0){@define('country',trim($info_B));}
}
function whois($url,$ip)
{
if (!$sock = fsockopen($url, 43, $errno, $errstr)) exit("$errno($errstr)");
else
{
fputs ($sock, $ip."\r\n");
$text_array = array();
while (!feof($sock)){$text_array[] = fgets($sock, 128);}
fclose ($sock);
$pattern = "|ReferralServer: whois://([^\n<:]+)|i";
preg_match($pattern, $text_array[9], $out);
if(!empty($out[1])) return whois($out[1], $ip);
else return $text_array;
}
}
echo inetnum.'<br/>';
echo netname.'<br/>';
echo descr.'<br/>';
echo country.'<br/>';
?>
|
| |
|
|
|
|
|
|
|
для: ProtoTeeP
(05.11.2007 в 14:02)
| | А по другому это как? Вам что требуется? | |
|
|
|
|
|
|
|
для: cheops
(05.11.2007 в 14:59)
| | Ну, более оптимально... а то он сильно тормозит.
мне надо:
inetnum
netname
descr
country
city | |
|
|
|
|
|
|
|
для: cheops
(05.11.2007 в 14:59)
| | еще у вас есть регулярное вырожение:
<?
$pattern = "|ReferralServer: whois://([^\n<:]+)|i";
preg_match($pattern, $text_array[9], $out);
?>
|
я поменял на массив, но может что "ReferralServer" будет не на 9 месте, тогда скрипт полетит... | |
|
|
|
|
|
|
|
для: ProtoTeeP
(05.11.2007 в 14:02)
| | Вот я переделал... может так лучше... кажется быстрее работает.
<center>
<form method=post>
<input type=text name=ip size=35>
<input type=submit value='Введите IP-адрес'>
</form>
</center>
<?php
if(!empty($_POST['ip']))
$result = whois("whois.arin.net",$_POST['ip']);
echo '<pre>';
print_r($result);
echo '</pre>';
function whois($url,$ip,$A = array('inetnum','netname','descr','country','city');)
{
$Z = array();
if (!$sock = fsockopen($url, 43, $errno, $errstr)) exit("$errno($errstr)");
else
{
fputs ($sock, $ip."\r\n");
$text_array = array();
while (!feof($sock))
{
@list($info_A, $info_B) = @explode(':',fgets($sock, 128),2);
if(strcasecmp('ReferralServer', trim($info_A)) == 0)
{return whois(str_ireplace('whois://','',trim($info_B)), $ip);}
foreach($A as $val)
{
if(strcasecmp($val, trim($info_A)) == 0 && empty($Z[$val]))
{$Z[$val] = trim($info_B);}
}
}
fclose ($sock);
return $Z;
}
}
?>
|
| |
|
|
|