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

BlackShadow

Well-known member
04.02.2011
111
3
#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">
Код:
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">
Код:
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">
Код:
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
Прошу о помощи! :)
 

acorn

PHP Developer
29.08.2004
585
3
#2
Конкретный скрипт не скажу, но в общих чертах куда двигаться:
нужно найти базу всех IP-адресов и проверять диапазон, как проверять предложу варианты после того, как найдешь базу :)
 

acorn

PHP Developer
29.08.2004
585
3
#4
По первому скрипту, урл
Для просмотра контента необходимо: Войти или зарегистрироваться
нерабочий

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

BlackShadow

Well-known member
04.02.2011
111
3
#5
Так, надо поискать....
А что предложите исправить в php.ini?

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

BlackShadow

Well-known member
04.02.2011
111
3
#7
Проверил пхпинфо

allow_url_fopen On

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

acorn

PHP Developer
29.08.2004
585
3
#8
а allow_url_include? как-то странно. должно работать...
еще проверь настройки в .htaccess, может там переопределяются эти параметры, ведь в ошибке явно написано, что проблема в этом.
 

BlackShadow

Well-known member
04.02.2011
111
3
#9
А вот
allow_url_include Off

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


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

acorn

PHP Developer
29.08.2004
585
3
#10
угу, попробуй поставить его в on - очень вероятно, что проблема в нём

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

BlackShadow

Well-known member
04.02.2011
111
3
#11
Да я о нем в курсе... Просто хостинг у меня от zerver.ru. Пиходится техподдержку пытать, чтобы узнать, что да где

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

acorn

PHP Developer
29.08.2004
585
3
#12
можешь попробовать создать файл .htaccess (именно такое название) и написать там:
php_flag allow_url_include on
 

BlackShadow

Well-known member
04.02.2011
111
3
#13
На локалхосте у себя allow, который include испривал на on и перезагрузил денвер. Второй скрипт написал мне Not found...
 

BlackShadow

Well-known member
04.02.2011
111
3
#14
Ну во первых, создать хтаккесс создать получилось, но на меня сразу же заругался DNS-сервер http://htaccess.ayola.net/ и выдал ошибку (500 по-моему).. Поэтому мне его пришлось удалить... Он мне предоставил форму, в которой можно самому менять хтаккесс (или загрузить свой).. Вот.. что мне надо сделать? Форма была пустая...
 

BlackShadow

Well-known member
04.02.2011
111
3
#16
Попробовал вставить. Жалуется на эту строку:
PHP:
CREATE TABLE IF NOT EXISTS `ipgeobase` (
Parse error: syntax error, unexpected T_STRING in V:\home\localhost\www\ipTownMSQL.inc on line 3
 

BlackShadow

Well-known member
04.02.2011
111
3
#18
Здесь используется не подключение к какому-то сайту, а прямое взаимодействие с txt-файлом, который весит 21 метр.. Там вся база... мускул не работает (пост выше)