IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Как определить страну посетителя? (https://www.imho.ws/showthread.php?t=90045)

Goryn 28.07.2005 14:05

Как определить страну посетителя?
 
Задача такая: при заходе на сайт надо определить странц посетителя и выдать ему страницу на соотвествующем языке. Языка три - русский, немецкий и английский.

То есть допустим если он из России - то на русском, из Германии - на немецком, всем остальным - на английском.

Не подскажет ли кто-либо соотвествующий код на PHP или Perl?

RaZEr 28.07.2005 14:09

http://www.imho.ws/showthread.php?t=74977

CEO 03.08.2005 16:03

Есть еще PHP скрипт IP2Country - определяет страну посетителя по его IP. http://www.lugarus.com/modules.php?n...print&sid=4489

v.2 03.08.2005 16:43

Для начала советую спросить у админа своего сервака не стоит ли там гео-ип и не могут ли поставить, если не стоит. Проблем меньше будет, заодно получишь грамотную косультацию по этому вопросу.

Ale 03.08.2005 19:04

А я б для начала уточнил что собсно нужно - страна или язык? Ну допустим Швейцария и что дальше? Если надо определить только язык - никакие базы и обслуживающие их скрипты не требуются

Sensey 03.08.2005 19:22

А если я из израиля ? но русский то я знаю? Так что лучше дать юзеру определять какой язык ему надо...

Goryn 15.08.2005 15:55

Цитата:

Сообщение от v.2
Для начала советую спросить у админа своего сервака не стоит ли там гео-ип

А не дашь ссылочку, где почитать что это за зверь такой?

Кстати, опредедение языка на самом деле было бы лучше. я об этом как раз изначально думал. Но вот вопрос, насколько это осуществимо...

RaZEr 15.08.2005 16:13

mod_geoip это модуль от www.maxmind.com

есть ещё наш: mod_geo (ftp://ftp.lexa.ru/pub/apache-rus/con...o-2.0.1.tar.gz)

Hatifnatt 16.08.2005 00:04

Цитата:

Goryn:
Кстати, опредедение языка на самом деле было бы лучше. я об этом как раз изначально думал. Но вот вопрос, насколько это осуществимо...
А какие проблемы? Броузер же возвращает язык системы и то какой язык имеет больший вес в его собственных настройках. Прям сходу не скажу как это сделать но вроде не очень сложно.

Ale 16.08.2005 03:20

Грубо говоря как-то так

PHP:
Код:

if(stristr($HTTP_ACCEPT_LANGUAGE,"ru")) {header("Location: http://rambler.ru");}
elseif(stristr($HTTP_ACCEPT_LANGUAGE,"de")) {header("Location: http://yahoo.de");}
else{header("Location: http://yahoo.com");}

Perl:
Код:

$lang = lc($ENV{'HTTP_ACCEPT_LANGUAGE'});
if (index($lang, "ru")>-1) {print "Location: http://rambler.ru\n\n";}
elsif (index($lang, "de")>-1) {print "Location: http://yahoo.de\n\n";}
else {print "Location: http://yahoo.com\n\n";}

JavaScript:
Код:

if(document.all)lng=navigator.browserLanguage
else lng=navigator.language
lng=lng.toLowerCase()
if (lng.indexOf('ru') > -1) document.location.href = 'http://rambler.ru'
else if (lng.indexOf('de') > -1) document.location.href = 'http://yahoo.de'
else document.location.href = 'http://yahoo.com'

Звиняюсь если где ошибнулся - щас нет возможности проверить все

apoc 18.08.2005 09:56

Ну насчет броузера, понятно... ничего тут военного нет, ну у меня к примеру стоит английский, но сайты на русском читаю, если есть возможность, нахожусь на територии СНГ... то почему мне английскую страницу нужно показывать?

Я считаю, что гео-айпи можно вполне поставить и без админа, собственно говоря, в свой движок я встроил его. Очень юзабильно получилось. Все данные хранятся в таблице (MYSQL). Делаеш выборку по айпи - получаешь язык.

База его лежит здесь:
http://www.maxmind.com/download/geoi...CountryCSV.zip

Флаги лежат здесь:
http://www.maxmind.com/download/geoip/database/flag.zip

Тянешь файл: geo.dat

В нем будет нечто такое:

Код:

"2.6.190.56","2.6.190.63","33996344","33996351","GB","United Kingdom"
"3.0.0.0","4.2.144.255","50331648","67277055","US","United States"
"4.2.145.0","4.2.145.63","67277056","67277119","CA","Canada"
....

Создаешь таблицу такую:
Код:

CREATE TABLE `geoip` (
  `id` int(4) unsigned NOT NULL auto_increment,
  `ip_start` int(6) unsigned NOT NULL default '0',
  `ip_finish` int(6) unsigned NOT NULL default '0',
  `prefix` char(2) NOT NULL default '',
  `country` text NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `ip_start` (`ip_start`),
  KEY `ip_finish` (`ip_finish`)
) TYPE=MyISAM COMMENT='GeoIP by Site'

Импортируешь в таблицу так:
Код:

        if (file_exists($filename))
        {
                $GeoLines = file($filename);
                reset($GeoLines);
                for ($t=0; $t<count($GeoLines); $t++)
                {
                        $String = $GeoLines[$t];
                        $String = str_replace(array(chr(10),'"'),"",$String);
                        $String = str_replace("'","`",$String);
                        $GeoArray = explode(",",$String);
                        query("INSERT INTO `geoip` SET `ip_start`='$GeoArray[2]', `ip_finish`='$GeoArray[3]', `prefix`='$GeoArray[4]', `country`='$GeoArray[5]'");
        }
}

В принципе там у них есть и просто бинарный файл и алгоритм работы с ним... CNSTATS к примеру так работает...

Но я решил использовать базу... мне так показалось надежнее... чем файловая операция с 5-метровым файлом...
Удачи!

Ale 18.08.2005 11:55

Цитата:

если есть возможность, нахожусь на територии СНГ... то почему мне английскую страницу нужно показывать
ИМХО не надо путать географию с лингвистикой. Как у тебя с немецким? На случай если будешь на территори ФРГ или, скажем, прокси у тебя будет с немецкоязычным IP. А если Goryn раскрутится не на шутку и добавит японский с арабским :) Это т.е. посетитель должен подбирать себе правильный IP чтоб попасть на нужный язык на 1 (одном) сайте, вместо того чтоб сайт сам настраивался на установки посетителя

Геотаргеттинг нужен совсем для другого - напр реклама привязанная к географии (провайдеры, риэлтеры итд), верификация разного рода итд. А определение языка - совсем др тема :)

apoc 18.08.2005 12:04

Цитата:

Ale:
Это т.е. посетитель должен подбирать себе правильный IP чтоб попасть на нужный язык на 1 (одном) сайте
Вы хотите об этом поговрить? Флеймом попахивает!
ЦИТИРУЮ!!! ВНИМАНИЕ!!!

Цитата:

Задача такая: при заходе на сайт надо определить страну посетителя и выдать ему страницу на соотвествующем языке. Языка три - русский, немецкий и английский.
Уважаемый Ale страну можно определить по айпи не так ли? Кодовая страница на машине не есть страна. Геотаргеттинг - это вещь которую можно а не нужно использовать так как вам нужно.

Ale 18.08.2005 12:53

Уважаемый apoc прочтите топик внимательнее, задача уже изменилась:
Цитата:

Сообщение от Goryn
опредедение языка на самом деле было бы лучше. я об этом как раз изначально думал. Но вот вопрос, насколько это осуществимо...

Насчет флейма - согласен. Прекращаем


Часовой пояс GMT +4, время: 18:45.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.