[php] Kod lub nazwa kraju z IP

0

Od rana szukam i jedno działające co znalazłem korzysta z whois. Chodzi o to jak sprawdzić nazwę kraju lub ewentualnie jego kod gdzie jest zarejestrowany IP? [glowa]

0
<?php
$errno = 0;
$errstr = '';

$ip = $_GET['ip'];

$s = fsockopen('whois.arin.net', 43, $errno, $errstr, 5);
if (!$s)
{
    die($errno . ': ' . $errstr);
}
fputs($s, "$ip\n");
$ret = '';
while(!feof($s))
{
    $ret .= fgets($s, 1024);
}
fclose($s);
if (preg_match('#^ReferralServer:(.+)$#m', $ret, $c))
{
    /* Musimy odpyta� inny serwer :-) */
    preg_match('#whois://(.+?)(:43)?$#', $c[1], $c);
    $s = fsockopen($c[1], 43, $errno, $errstr, 5);
    if (!$s)
    {
        die($errno . ': ' . $errstr);
    }
    fputs($s, "$ip\n");
    $ret = '';
    while(!feof($s))
    {
        $ret .= fgets($s, 1024);
    }
    fclose($s);
    
}

if (preg_match('#country.+?([A-Z]+)#i', $ret, $c))
{
    print_r($c[1]);
}
?> 
0

Dzięki, działa ładnie [soczek]

Tylko mam pytanie:

if (preg_match('#^ReferralServer:(.+)$#m', $ret, $c))

Kiedy ten if będzie spełniony [???]

0

Gdy w kodzie pojawi się linijka:

RefferalServer:adres
#np
ReferralServer: whois://whois.apnic.net

Czyli serwer whois odeśle nas do innego serwera (np ripe).
Flaga "m" oznacza, że ^$ ma łapać początek/koniec linijki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1