|
|
|
|
|
для: Кузнецов М.В.
(29.04.2005 в 13:12)
| | Ясно, спасибо. Надеюсь, что я все верно сделал. | |
|
|
|
|
|
|
|
для: Shorr Kan
(29.04.2005 в 11:16)
| | > Страна AU... А если он определил страну, то зачем выдале
>реф-сервер?
Значит, этот диапазон IP не его. Т.е. он про него что-то знает, этот IP есть в базе, но так как не тот диапазон, и он сомневается в правильности данных, он предлагает обратиться к реферальному серверу для получения более точных сведений. | |
|
|
|
|
|
|
|
для: 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 в 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;
?>
|
| |
|
|
|
|
|
|
|
для: Кузнецов М.В.
(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... А если он определил страну, то зачем выдале реф-сервер? | |
|
|
|
|
|
|
|
для: Shorr Kan
(29.04.2005 в 01:44)
| | Дело в том, что ripe.net иногда выкидывает вот такие экивоки, что про некоторые IP, не лежащие в его зоне он говорит, что они не имеют географической привязки. И не дает при этом ссылок на реферальные сервера (потому что если он говорит, что нет геопривязки, то ни о каких рефералах речь не идет).
Почему он так делает - вопрос не к нам, в качестве выхода можно начинать пользоваться сервисом который весьма исправно дает ссылки на реферальные сервера, если IP-адрес не принадлежит к тому диапазону, за который он отвечает. | |
|
|
|
|
|
|
|
для: korwin
(29.04.2005 в 04:22)
| | Угу... Но этот не лучше... Ответ на эти адреса, которые ripe.net так пометил, вот таков:
Информация о введенном IP адресе не найдена в базе.
Попробуйте другой адрес.
и
Город:
Страна:
Код страны:
Сеть: -
Описание сети:
Безумно информативно :( | |
|
|
|
|
|
|
|
для: Shorr Kan
(29.04.2005 в 01:44)
| | согласен copy-paste "слегка" не аккуратный, пардон не уследил | |
|
|
|
|
|
|
|
для: 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')");
|
| |
|
|
|
|
|
|
|
для: Кузнецов М.В.
(29.04.2005 в 00:49)
| | Восхитительно... В таком случае, как это проверять? ripe не выдал ссылки на другой whois... Как быть?
Единственное, что приходит в голову, это если вижу такую строку - пересылать на другую функцию, которая с другим whois работать будет... Но я не знаю список whois'ов... Может быть, поделитесь такими, которые... ну как... Основные, что ли. Вот как ripe.net
Или тут лучше как-то иначе действовать? | |
|
|
|
|