Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите переделать whois
 
 автор: ProtoTeeP   (05.11.2007 в 14:02)   письмо автору
 
 

нашет тут на форуме скрипт 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($url43$errno$errstr)) exit("$errno($errstr)"); 
        else 
        {
        
fputs ($sock$ip."\r\n"); 
        
$text_array = array(); 
            while (!
feof($sock)){$text_array[] = fgets($sock128);} 
        
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/>';
?>

   
 
 автор: cheops   (05.11.2007 в 14:59)   письмо автору
 
   для: ProtoTeeP   (05.11.2007 в 14:02)
 

А по другому это как? Вам что требуется?

   
 
 автор: ProtoTeeP   (05.11.2007 в 15:08)   письмо автору
 
   для: cheops   (05.11.2007 в 14:59)
 

Ну, более оптимально... а то он сильно тормозит.

мне надо:

inetnum
netname
descr
country
city

   
 
 автор: ProtoTeeP   (05.11.2007 в 15:12)   письмо автору
 
   для: cheops   (05.11.2007 в 14:59)
 

еще у вас есть регулярное вырожение:


<?
        $pattern 
"|ReferralServer: whois://([^\n<:]+)|i";  
        
preg_match($pattern$text_array[9], $out); 
?>


я поменял на массив, но может что "ReferralServer" будет не на 9 месте, тогда скрипт полетит...

   
 
 автор: ProtoTeeP   (05.11.2007 в 15:25)   письмо автору
 
   для: 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($url43$errno$errstr)) exit("$errno($errstr)"); 
        else 
        {
        
fputs ($sock$ip."\r\n"); 
        
$text_array = array(); 
            while (!
feof($sock))
            {
            @list(
$info_A$info_B) = @explode(':',fgets($sock128),2);
                if(
strcasecmp('ReferralServer'trim($info_A)) == 0)
                {return 
whois(str_ireplace('whois://','',trim($info_B)), $ip);}
    
                foreach(
$A as $val)
                {
                    if(
strcasecmp($valtrim($info_A)) == && empty($Z[$val]))
                    {
$Z[$val] = trim($info_B);}
                }
            }
        
fclose ($sock);
        return 
$Z
        }
    }
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования