Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Где проверить соотношение айпи-страна

Сообщения:  [1-10]    [11-20]  [21-25] 

 
 автор: Shorr Kan   (29.04.2005 в 13:37)   письмо автору
 
   для: Кузнецов М.В.   (29.04.2005 в 13:12)
 

Ясно, спасибо. Надеюсь, что я все верно сделал.

   
 
 автор: Кузнецов М.В.   (29.04.2005 в 13:12)   письмо автору
 
   для: Shorr Kan   (29.04.2005 в 11:16)
 

> Страна AU... А если он определил страну, то зачем выдале
>реф-сервер?
Значит, этот диапазон IP не его. Т.е. он про него что-то знает, этот IP есть в базе, но так как не тот диапазон, и он сомневается в правильности данных, он предлагает обратиться к реферальному серверу для получения более точных сведений.

   
 
 автор: Shorr Kan   (29.04.2005 в 12:43)   письмо автору
 
   для: Shorr Kan   (29.04.2005 в 12:39)
 

Так, изменил в конце на
<?
if(!empty($ref)){
$ref_server=explode(":",$ref[1]);
$country=whois(trim($ref_server[0]),$ip);
return 
$country;
}else{return 
$line_ok;}
}
$country=whois($server,$ip);
print 
"!".$country;
?>


Вроде стало все верно... Но верно ли это?

   
 
 автор: Shorr Kan   (29.04.2005 в 12:39)   письмо автору
 
   для: Shorr Kan   (29.04.2005 в 11:16)
 

Но я проверил свой айпи... неверно. Однако, по реферальному серверу пошел - верно. Я попытался сделать следование... но что-то не получается... Вы не могли бы помочь? Вот моя попытка:



<?

$ip
='xxx.xxx.xxx.xxx';
$server="whois.arin.net";
function 
whois($server,$ip) {
$sock fsockopen ($server,43,$errno,$errstr);
      
    if (!
$sock) {
      echo(
"$errno($errstr)");
      return;
    }
    else {
      
fputs ($sock$ip."\r\n");
      
      while (!
feof($sock)) {
           
$line=str_replace(":",":      ",fgets ($sock,128));
        
           
           
$first=substr($line,0,+strlen("country:"));
           
$f_ref=substr($line,0,+strlen("ReferralServer:"));
           if(
$first=="Country:" or $first=="country:")
           {
$line_ok=$line;}
           if(
$f_ref=="ReferralServer:" or $f_ref=="referralserver:")
           {
$ref=explode("//",$line);}
        
        }
    }
    
fclose ($sock);
if(!empty(
$ref)){
$ref_server=explode(":",$ref[1]);
whois(trim($ref_server[0]),$ip);
}else{return 
$line_ok;}
$country=whois($server,$ip);
print 
"!".$country;
?>

   
 
 автор: Shorr Kan   (29.04.2005 в 11:16)   письмо автору
 
   для: Кузнецов М.В.   (29.04.2005 в 10:46)
 

Великолепно! Спасибо большое, он действительно прикидывается работающим... Но вот что он мне выдал:


OrgName: Asia Pacific Network Information Centre
OrgID: APNIC
Address: PO Box 2131
City: Milton
StateProv: QLD
PostalCode: 4064
Country: AU

ReferralServer: whois: //whois.apnic.net



Страна AU... А если он определил страну, то зачем выдале реф-сервер?

   
 
 автор: Кузнецов М.В.   (29.04.2005 в 10:46)   письмо автору
 
   для: Shorr Kan   (29.04.2005 в 01:44)
 

Дело в том, что ripe.net иногда выкидывает вот такие экивоки, что про некоторые IP, не лежащие в его зоне он говорит, что они не имеют географической привязки. И не дает при этом ссылок на реферальные сервера (потому что если он говорит, что нет геопривязки, то ни о каких рефералах речь не идет).
Почему он так делает - вопрос не к нам, в качестве выхода можно начинать пользоваться сервисом
whois.arin.net
который весьма исправно дает ссылки на реферальные сервера, если IP-адрес не принадлежит к тому диапазону, за который он отвечает.

   
 
 автор: Shorr Kan   (29.04.2005 в 08:44)   письмо автору
 
   для: korwin   (29.04.2005 в 04:22)
 

Угу... Но этот не лучше... Ответ на эти адреса, которые ripe.net так пометил, вот таков:

Информация о введенном IP адресе не найдена в базе.
Попробуйте другой адрес.

и

Город:
Страна:
Код страны:
Сеть: -
Описание сети:



Безумно информативно :(

   
 
 автор: korwin   (29.04.2005 в 04:22)   письмо автору
 
   для: Shorr Kan   (29.04.2005 в 01:44)
 

согласен copy-paste "слегка" не аккуратный, пардон не уследил

   
 
 автор: korwin   (29.04.2005 в 04:17)   письмо автору
 
   для: Shorr Kan   (29.04.2005 в 01:44)
 

Недавно столкнулись с похожей проблемой, вот пример(код не мой, просто нашел в файлах где он используется):

    $host = 'ip2city.ru';
    $path = "/ip2city.php?ip=".$ip;
 
 //соединение с хостом    
  $header = "GET $path HTTP/1.0\nHOST: $host\n\n";
  if(@$so = fsockopen($host, 80, &$errno, &$errstr, 30)) 

  {fputs($so, $header);
  while(fgets($so,2048)!="\r\n" && !feof($so));
  unset($buf);
  while(!feof($so)) @$buf.=fread($so,2048);
  fclose($so);}
 
    $info = explode("\n",$buf);
    $city = substr($info[0], (strpos($info[0],"=")) + 1); //удаляет все перед =
    $country = substr($info[4], (strpos($info[4],"=")) //удаляет все перед =
mysql_query("insert into stats_cities_now values(null, '$camp_id', '$city', '$country')");

   
 
 автор: Shorr Kan   (29.04.2005 в 01:44)   письмо автору
 
   для: Кузнецов М.В.   (29.04.2005 в 00:49)
 

Восхитительно... В таком случае, как это проверять? ripe не выдал ссылки на другой whois... Как быть?

Единственное, что приходит в голову, это если вижу такую строку - пересылать на другую функцию, которая с другим whois работать будет... Но я не знаю список whois'ов... Может быть, поделитесь такими, которые... ну как... Основные, что ли. Вот как ripe.net

Или тут лучше как-то иначе действовать?

   

Сообщения:  [1-10]    [11-20]  [21-25] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования