IP 2 Flag помочь дописать скрипт

Тема в разделе "Как сделать...", создана пользователем Jake Foley, 25 ноя 2012.

  1. Jake Foley

    Jake Foley

    Регистр.:
    14 дек 2006
    Сообщения:
    839
    Симпатии:
    366
    Здравствуйте,

    Просьба помочь в реализации скрипта который должен показывать флаг страны в зависимости от IP пользователя.

    Перепробовал готовые решения, но ни одно из них не определяло все страны (часто был пустой флаг)

    И вот я нашел кое что:

    PHP:
    <?php
    $ip2
    ="91.197.17.233";
    function 
    whois($ip2){
    error_reporting(0);
    $url 'whois.arin.net';
    function 
    whois0($url,$ip2)
    {
      
    $sock fsockopen($url43$errno$errstr);
      if (!
    $sock) exit("$errno($errstr)");
      else
      {
        
    fputs ($sock$ip2."\r\n");
        
    $text "";
        while (!
    feof($sock))
        {
          
    $text .= fgets ($sock128)."<br>";
        }
        
    fclose ($sock);
        
    $pattern "|ReferralServer: whois://([^\n<:]+)|i";
        
    preg_match($pattern$text$out);
        if(!empty(
    $out[1])) $rez whois0($out[1], $ip2);
        else 
    $rez $text;
        
    $rez eregi_replace'(.*)<br>inetnum''inetnum',$rez);
        
    $rez eregi_replace'<br>% Information related(.*)''<br>',$rez);
        return 
    $rez;
      }
    }
     
    $str0 whois0($url,$ip2);
    $str1 eregi_replace'(.*)country:''',$str0);
    $str1 eregi_replace'<br>(.*)''',$str1);
    $res5 eregi_replace' ''',$str1);
    $res5 strtolower($res5);
    if(!(
    $res5 ==''))
    $res '<img src="flags/' .$res5 .'.gif">';
    return 
    $res;
    }
     
    if(!empty(
    $_POST['ip2'])) echo whois($_POST['ip2']);
     
    ?>
    Определяет страну и берет флаг с папки flags.

    Мне нужно показывать результат выполнения скрипта в виде
    <img src="Перейти по ссылке" />

    Просьба помочь с реализацией.
     
  2. Waki

    Waki Постоялец

    Регистр.:
    14 ноя 2012
    Сообщения:
    64
    Симпатии:
    21
    А если использовать готовые скрипты, наподобие такого Перейти по ссылке ?
    И его уже доделать как требуется, тут и база у тебя хранится будет, ненадо куда-то извне коннектиться. Хотя наверно я какие-то нюансы незнаю.
     
  3. Delfi

    Delfi Создатель

    Регистр.:
    16 июн 2011
    Сообщения:
    45
    Симпатии:
    11
    Берем sypexgeo

    Базы + скрипт поиска информации по ip. Преимущества - все делается на вашем сервере и не отнимает много ресурсов. На хабре человек писал о создании этой штуки. Там используется, как я понимаю, бинарный поиск.

    Далее подключаем php библиотеку с того же проекта, которая позволяет работать с базами

    PHP:
    $SxGeo = new SxGeo("SxGeoCity.dat"SXGEO_BATCH SXGEO_MEMORY);
    Затем

    PHP:
    $country $SxGeo->getCountry($ip);  (возвращает двухзначный ISO-код страны)
    В итоге получаем двухзначный стандартизированный код страны и выводим картинку нужного флага

    PHP:
    echo "<img src='images/flags/{$country}.jpg' />";
    Получаем независимость от сторонних сервисов и довольно легкий скрипт. Сравнения скорости работы определения страны по ip можно найти на том же хабре, где сравнивались sypexgeo и другие похожие.

    Не сочтите за рекламу, не имею отношения к ним, гуглиться в два счета и так. Просто недавно использовал на рабочем проекте и очень понравилась скорость работы.
     
    zhitya нравится это.