Определяем в какой стране живёт посетитель

Tofik

Новичок
Определяем в какой стране живёт посетитель

Вот код:
PHP:
<?
$ip=$_SERVER['REMOTE_ADDR'];
$array=array_reverse(explode(".",gethostbyaddr($ip)));
$host=$array[0];
?>
Заказчик жалуется, что нет много стран, которые отображает HotLog. Дело в том, что $host иногда не даёт расширения by, ru, pl и др. Правильно ли я определяю страну? Есть ли другие варианты и какие?
 

kv@rx

Guest
В августовском Хакере случайно наткнулся на скрипт. Они деле посредством функции whois() Linux'a. Потом разбивают ее на переменные и получается полная инфа по айпишнику.

Но пока у меня сделано с помощью двух приведенных выше ответов.
 

fisher

накатила суть
добавлю, что приведенное в первом посте решение _неприемлимо_ для сколь-нибудь крупных проектов поскольку _невероятно_ медленное
 

Rus

Guest
$ip= $_SERVER['REMOTE_ADDR'];
exec("whois $ip", $result);

for($i=13; $i<count($result); $i++)
if (strstr($result[$i], "country:"))
{
$country = $result[$i];
break;
}
 

bkonst

.. хочется странного?...
А не будет ли вариант через whois жутко тормозить? Я в свое время изрядно повозился с получением whois-информации; впечатления очень грустные:
1) медленно (задержки порядка секунд)
2) мало (ограничение на количество запросов с одного хоста с час/сутки)
 

Rammstein

PHPClub::News
Если для статистики выбираете данные, то нужно сопоставлять страну и IP на стадии сбивания её, а не сбора. Тогда тормозов меньше будет...
+ любое обращение к DNS - тормоза, соответственно юзаем ip2country
 

malinov_ru

Новичок
GeoIP используй - она со странами бесплатная, файлик весит всего 700 килобайт по странам, удобно, обновляется довольно часто...
 

Rus

Guest
$ip= $_SERVER['REMOTE_ADDR'];
exec("whois $ip", $result);

вот подумал, а возможно ли подделка $_SERVER['REMOTE_ADDR'] ??? если да, то это серезная дыра будет!
 
Сверху