За последние 24 часа нас посетил 18691 программист и 1640 роботов. Сейчас ищут 989 программистов ...

ip2country

Тема в разделе "Решения, алгоритмы", создана пользователем 440Hz, 19 апр 2007.

  1. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    http://php.ru/ip2country/

    просьба потестить и если все нормально выложим решение (SQL+PHP)
     
  2. Anonymous

    Anonymous Guest

    Меня определил правильно, что редкость... я обычно Россией получаюсь.
    Еще из дома попробую.
     
  3. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Меня тоже правильно определил с двух мест
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    меня не нашёл :(
    информацию прислать?
     
  5. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    с работы правильно..
    а как 127.0.0.1 получили то? еще внутренний можно понять, тут сервак его отдает..
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    меня правильно определили
     
  7. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Для "дебугинговых" целей лучше выводить время затраченное на определение :)
    А что один SQL запрос называется решением ?
     
  8. Anonymous

    Anonymous Guest

    из дома тоже.
     
  9. Adil

    Adil Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
    Меня тоже правильно определил, но я видел однажды на одном сайте, где более подробно адрес показывают, включая город и даже поселок. Но я забыл ссылку.
     
  10. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    И меня правильно засек сцуко :)
     
  11. KombaInER

    KombaInER Активный пользователь

    С нами с:
    5 апр 2007
    Сообщения:
    221
    Симпатии:
    0
    Адрес:
    Днепр+Крым=Украина
    не определил
     
  12. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    для IP с которого оставлено это сообщение, результат:
    NA -


    факт - Россия, Москва
     
  13. ZZZubec

    ZZZubec Активный пользователь

    С нами с:
    28 мар 2007
    Сообщения:
    140
    Симпатии:
    0
    Мой тож не видит: Свердловская область.
     
  14. Danilevsky

    Danilevsky Активный пользователь

    С нами с:
    12 фев 2006
    Сообщения:
    286
    Симпатии:
    0
    Адрес:
    Киев
    Украину нихрена не определяет
     
  15. pel

    pel Активный пользователь

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    мою Украину определил :)
     
  16. Danilevsky

    Danilevsky Активный пользователь

    С нами с:
    12 фев 2006
    Сообщения:
    286
    Симпатии:
    0
    Адрес:
    Киев
    Кто сказал что Симферополь это Украина?
     
  17. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    О и меня определило... во повезло ;)
     
  18. pel

    pel Активный пользователь

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    :shock:
    :?
    приехали... =\
     
  19. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    пишите свои IP, что б ошибки поковырять
     
  20. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    если нет - брось в меня камень!
    =)

    собственнов се вот так:

    PHP:
    1. <?
    2.  
    3. require_once('start.inc');
    4.  
    5. $OOPSGlobal["TEMPLATE"] = "template/page_inner.html";
    6.  
    7. $BODY = new OOPSBuffer();
    8.  
    9. $BODY->Send('<center>');
    10.  
    11. $BODY->Send('<table bgcolor=#777777 cellspacing=1 cellpadding=5>');
    12.  
    13.     $BODY->Send('<tr bgcolor=#EEEEEE>');
    14.     $BODY->Send('<th>IP</th>');
    15.     $BODY->Send('<th colspan=2>Сеть</th>');
    16.     $BODY->Send('<th>Код</th>');
    17.     $BODY->Send('<th>Страна полное название</th>');
    18.     $BODY->Send('</tr>');
    19.  
    20.  
    21. $IPS = split('[,; ]+',OOPSGetIP());
    22.  
    23. foreach($IPS AS $IP) {
    24.  
    25.     list($country_short,$country_long,$net_start,$net_stop) = ip2country($IP);
    26.  
    27.     $BODY->Send('<tr bgcolor=white>');
    28.     $BODY->Send('<td>'.$IP.'</td>');
    29.     $BODY->Send('<td>'.$net_start.'</td>');
    30.     $BODY->Send('<td>'.$net_stop.'</td>');
    31.     $BODY->Send('<td>'.$country_short.'</td>');
    32.     $BODY->Send('<td>'.$country_long.'</td>');
    33.     $BODY->Send('</tr>');
    34.  
    35. }
    36.  
    37.  
    38. $BODY->Send('</table>');
    39. $BODY->Send('</div>');
    40.  
    41.  
    42. $BODY->Send('</center>');
    43.  
    44. require_once('stop.inc');
    45.  
    46.  
    47. ?>
    ip2country

    PHP:
    1. <?
    2.  
    3. function ip2country($ip) {
    4.     global $OOPSGlobal;
    5.  
    6.     $country1 = 'NA';
    7.     $country2 = '-';
    8.  
    9.     $ipn = (float) sprintf("%u", ip2long($ip));
    10.  
    11.     if (!eregi ("^(127|10|172\.16|192\.168)\.", $ip)) {
    12.  
    13.         $SQL = "
    14.        
    15.         SELECT
    16.             *
    17.         FROM
    18.             ip2country
    19.         WHERE
    20.             start_long <= {$ipn} AND stop_long >= {$ipn}
    21.        
    22.         ";
    23.  
    24.         $row = $OOPSGlobal['SES']->db->QueryObject($SQL);
    25.  
    26.         if($row) return array($row->country,$row->country_name,$row->start_ip,$row->stop_ip);
    27.  
    28.     }
    29.     if (eregi ("^(127|10|172\.16|192\.168)\.", $ip)) {
    30.         return array('XXX','Local/Grey NetWork(s)','','');
    31.     }
    32.  
    33.     return array($country1,$country2,'','');
    34.  
    35. }
    36.  
    37. ?>
     
  21. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    а там стоит кеширующий nginx. он и добавляет 127.0.0.1, т.к. запрос апачу идет на этот адрес.
     
  22. Anonymous

    Anonymous Guest

    ыыы офигеть.
    Требую веб-сервис!!!
     
  23. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    91.187.5.220 белинфонет
    Беларусь, Минск соответственно ;)
    обычно определяется. А саму базу IP мона? :oops:
     
  24. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    что?что?
     
  25. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    а сейчас?