Как Определить Город (страну) Юзера По Его Ip?

Тема в разделе "PHP программирование", создана пользователем BlackShadow, 4 фев 2012.

  1. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    1
    Кто нибудь встречал подобные скрипты? Может сам писал? Просто я нашел крипты, но они не рабочие какие-то. Проверял и на locahost и на доменном платном сайте. Может подскажете пару скриптов или сайтов с ними?

    Добавлено: Вот одно из найденных мною решений:

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Скрипт 1</div></div><div class="sp-body"><div class="sp-content">
    Код (PHP):
    function geo_info($ip)
    {
    $xml = '<ipquery><fields><city/></fields><ip-list>'
    . '<ip>'.$ip.'</ip></ip-list></ipquery>';
    $ch = curl_init('http://194.85.91.253:8090/geo/geo.html');
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    $result = curl_exec($ch);
    if(curl_errno($ch) != 0)
    die('curl_errno('.curl_errno($ch).'), curl_error('.curl_error($ch).')');
    curl_close($ch);
    if (strpos($result, '<message>Not found</message>') !== false)
    return false;
    preg_match('/<city>(.*)<\/city>/', $result, $city);
    return $city[1];
    }
    $townIp = geo_info($ipus);
    Вот оно выдало такую ошибку:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Ошибка скрипта 1</div></div><div class="sp-body"><div class="sp-content">
    Код (Text):
    Warning: curl_setopt(): supplied argument is not a valid cURL handle resource in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc on line 30

    Warning: curl_setopt(): supplied argument is not a valid cURL handle resource in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc on line 31

    Warning: curl_setopt(): supplied argument is not a valid cURL handle resource in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc on line 32

    Warning: curl_setopt(): supplied argument is not a valid cURL handle resource in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc on line 33

    Warning: curl_exec(): supplied argument is not a valid cURL handle resource in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc on line 34

    Warning: curl_errno(): supplied argument is not a valid cURL handle resource in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc on line 35

    Warning: curl_close(): supplied argument is not a valid cURL handle resource in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc on line 37

    Fatal error: Cannot redeclare geo_info() (previously declared in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc:25) in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc on line 25
    А вот второе найденное решение:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Скрипт 2</div></div><div class="sp-body"><div class="sp-content">
    Код (Text):
    function occurrence($ip='', $to = 'windows-1251'){

    $ip = ($ip) ? $ip : $_SERVER['REMOTE_ADDR'];

    $xml = simplexml_load_file('http://ipgeobase.ru:7020/geo?ip='.$ip);

    if($xml->ip->message){

    if( $to == 'utf-8' ) {return $xml->ip->message;} else {

    if( function_exists( 'iconv' ) ) return iconv( "UTF-8", $to . "//IGNORE",$xml->ip->message);else return "The library iconv is not supported by your server";}

    }else{if( $to == 'utf-8' ) {return $xml->ip->city;} else {if( function_exists( 'iconv' ) ) return iconv( "UTF-8", $to . "//IGNORE",$xml->ip->city);else return "The library iconv is not supported by your server";}}}

    // Вызов функции
    echo occurrence('193.193.199.255','utf-8');
    Вот он мне что выдал:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Ошибка скрипта 2</div></div><div class="sp-body"><div class="sp-content">
    Код (Text):
    Warning: simplexml_load_file() [function.simplexml-load-file]: URL file-access is disabled in the server configuration in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc on line 49

    Warning: simplexml_load_file(http://ipgeobase.ru:7020/geo?ip=213.87.133.166) [function.simplexml-load-file]: failed to open stream: no suitable wrapper could be found in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc on line 49

    Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://ipgeobase.ru:7020/geo?ip=213.87.133.166" in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc on line 49

    Fatal error: Cannot redeclare occurrence() (previously declared in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc:45) in /ftp_aerium-02/forstudents_616/tsk-rika.ru/ipVisor.inc on line 45
    Прошу о помощи! :)
     
  2. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    Конкретный скрипт не скажу, но в общих чертах куда двигаться:
    нужно найти базу всех IP-адресов и проверять диапазон, как проверять предложу варианты после того, как найдешь базу :)
     
  3. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    1
    База практически у всех одинаковая: http://ipgeobase.ru
    Оттуда всё прут. Но она не совсем точная...
     
  4. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    По первому скрипту, урл http://194.85.91.253:8090/geo/geo.html нерабочий

    По второму скрипту, в php.ini запрещен доступ по урлу этой функцией:
    URL file-access is disabled in the server configuration
     
  5. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    1
    Так, надо поискать....
    А что предложите исправить в php.ini?

    И как это можно увидеть в phpinfo?
     
  6. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    allow_url_fopen
     
  7. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    1
    Проверил пхпинфо

    allow_url_fopen On

    Значит ошибка всё-таки в скрипте?
     
  8. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    а allow_url_include? как-то странно. должно работать...
    еще проверь настройки в .htaccess, может там переопределяются эти параметры, ведь в ошибке явно написано, что проблема в этом.
     
  9. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    1
    А вот
    allow_url_include Off

    Как раз off... В этом проблема?


    И насчет htaccess... Где мне его увидеть? Взять? Примерно в какой директории?
     
  10. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    угу, попробуй поставить его в on - очень вероятно, что проблема в нём

    .htaccess файл с конфигурацией для конкретной директории, обычно лежит в корне сайта. его может и не быть. подробнее о нём можно узнать у гугла :)
     
  11. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    1
    Да я о нем в курсе... Просто хостинг у меня от zerver.ru. Пиходится техподдержку пытать, чтобы узнать, что да где

    Кстати, а если я сам создам .htaccess в корне, то что-нибудь изменится?
     
  12. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    можешь попробовать создать файл .htaccess (именно такое название) и написать там:
    php_flag allow_url_include on
     
  13. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    1
    На локалхосте у себя allow, который include испривал на on и перезагрузил денвер. Второй скрипт написал мне Not found...
     
  14. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    1
    Ну во первых, создать хтаккесс создать получилось, но на меня сразу же заругался DNS-сервер http://htaccess.ayola.net/ и выдал ошибку (500 по-моему).. Поэтому мне его пришлось удалить... Он мне предоставил форму, в которой можно самому менять хтаккесс (или загрузить свой).. Вот.. что мне надо сделать? Форма была пустая...
     
  15. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    1
    И кстати, на ipgeobase есть архив с txt-файлом, который в себе несет ip-базу всех адресов. вот сайт, который говорит, как устанавливать...
    http://coderiver.ru/2011/04/opredelenie-go...na-php-i-mysql/

    Правда он на мускуле... Нормально же?
     
  16. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    1
    Попробовал вставить. Жалуется на эту строку:
    Код (PHP):
    CREATE TABLE IF NOT EXISTS `ipgeobase` (
    Parse error: syntax error, unexpected T_STRING in V:\home\localhost\www\ipTownMSQL.inc on line 3
     
  17. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    19
    Что нормально?
     
  18. BlackShadow

    BlackShadow Well-Known Member

    Регистрация:
    4 фев 2011
    Сообщения:
    111
    Симпатии:
    1
    Здесь используется не подключение к какому-то сайту, а прямое взаимодействие с txt-файлом, который весит 21 метр.. Там вся база... мускул не работает (пост выше)
     
  19. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    19
    Так исправте, чтобы работал.
     
  20. BlackShadow

    BlackShadow Well-Known Member

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

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