Определение Города По Ip-адресу Юзера

Тема в разделе "Граббинг информации", создана пользователем BlackShadow, 5 фев 2012.

  1. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    1
    Может код и грубый, но рабочий. Точность определения города зависит НЕ от скрипта, а от данных, получаемые им. Вот, собственно, код. С объяснением:
    Код (Text):
    <?php
    // Сначала получаем данные о сервере
    $dom = $_SERVER['HTTP_HOST'];
    $ipus = getenv('REMOTE_ADDR');
    // Если сервер - не localhost, то мы продолжим код
    /*
    Примечание: если хотите, можете эту проверку вырубить. Просто лично у меня она не прокатывала с денвера
    */
    if ($dom != "localhost"){
    // Формируем адрес подключения
    $fl = "http://ip-whois.net/ip_geo.php?ip=".$ipus;
    // Получаем эти данные через file_get_contents()
    /*
    Примечание: при использовании fopen() - не прокатывало...
    */
    $data = file_get_contents($fl);
    /*
    Получив данные, мы получили ОГРОМНУЮ страницу. Следовательно, нам нужно её обрезать так, чтобы осталась только надпись города (Город: [полученный город]). Если вы откроете страницу http://ip-whois.net/ip_geo.php?ip=какой-нибудь_IP, то Вы увидите, что страница обработала данные и получила город. Вскрыв исходный код страницы, вы увидите, что там присутствует 2 надписи "Город: [город]": первая - в JS-скрипте, вторая - ниже. Для обрезания мы используем функцию strstr(), и, чтобы обрезать ПРАВИЛЬНО, сначала обрежем до места </IFRAME>, чтобы перейти ЗА надпись в JS-скрипте...
    */
    $data = strstr($data, "</IFRAME>");
    // А теперь непосредственно обрезаем от надписи "Город: "
    $data = strstr($data, "Город: ");
    /*
    Теперь посмотрите: третье обрезание присвоил другой переменной. Это нужно для того, чтобы после того, как обрезать второй раз, мы заменили ТАКУЮ ЖЕ оставшуюся часть в $data по образцу из $data2
    */
    $data2 = strstr($data, "<br>");
    // Производим удаление, о котором я говорил выше
    $data3 = str_replace($data2, "", $data);
    // Выводим полученный город на экран
    echo $data3
    // А это про localhost, о котором говорилось выше
    } else {
    $data3 = "Неподходящий хост";
    }
    ?>
    Вот и всё. Кому надо - пользуйтесь :(

    Добавлено спустя 1 минуту 46 секунд:
    Найдете ошибку в синтаксисе - сообщите
     
  2. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Может не работать при нек-х настройках пхп, file_get_contents, стоит заменить curl-ом
     
  3. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    1
    По идее, если не подключить платную услугу в хосте, то вообще ничего работать не будет =)
     
Загрузка...

Поделиться этой страницей