Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > отображение инфо, исходя из страны юзера


Автор: Johny_03 3.9.2014, 14:52
Добрый день!
Имеется сайт, который ориентирован на две страны. Задача в том, чтобы в разделе КОНТАКТЫ отображался ТОЛЬКО номер телефона той страны, из которой вошел на сайт пользователь. Т.е. чтобы было автоопределение страны, с которой зашел человек. Как это реализовать? Отображать сразу два номера разных стран нельзя по определенным соображениям. Дублировать сайт тоже, т.к. в рекламе одинаковый адрес сайта.
Заранее спасибо!

Автор: s0lman 3.9.2014, 15:26
http://php.net/manual/ru/book.geoip.php

Автор: Aliance 4.9.2014, 09:11
А язык, на котором написан весь контент - одинаковый что ли?

Автор: s0lman 4.9.2014, 09:28
Цитата(Aliance @  4.9.2014,  08:11 Найти цитируемый пост)
А язык, на котором написан весь контент - одинаковый что ли? 

Как вариант, на русском можно смело писать контент для нескольких стран

Автор: ksnk 4.9.2014, 09:35
http://ipinfodb.com/ip_location_api.php
по этой ссылке можно организовать геолокацию на Javascript. Если приложению достаточно просто скрывать-показывать какие-то блоки - довольно удачное и простое решение. Чтобы не бомбить их сервер очень часто - можно сохранять результат в куках. 
Есть примеры для разных языков.

https://www.maxmind.com/ru/geolocation_landing
Геолокация по взрослому, с городами. Хотя тоже есть несложная javascript приблуда.

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


Автор: ksnk 4.9.2014, 10:01
А про язык - можно смотреть на заголовок HTTP_ACCEPT_LANGUAGE

Автор: Johny_03 5.9.2014, 00:34
Вот собрал код, но он почему-то не работает, пишет ошибку 4-ой строки ($geoip = geoip_open("gip/geolitecity.dat", GEOIP_STANDARD);):
Код

     <?php

include("gip/geoip.inc");
include("gip/geoipcity.inc");
$ip = $_SERVER['REMOTE_ADDR'];
$geoip = geoip_open("gip/geolitecity.dat", GEOIP_STANDARD);
$geodata = GeoIP_record_by_addr($geoip, $ip);
geoip_close($geoip);
$geodata = array($geodata);
$code = strtolower($geodata['country_code']);
switch ($code) {
    case "ru":
        header("Location:http://site.com/ru/");
        break;
    case "ua":
        header("Location:http://site.com/ua/");
        break;
}

?>


Автор: ksnk 5.9.2014, 07:06
Так и пишет "ошибка 4-й строки" или сообщение какое-то другое?

Автор: Aliance 5.9.2014, 07:37
Ошибка видимо из-за неизвестной функции geoip_open. А она не известна видимо потому, что файл не подключился, скорее всего из-за неправильно указанного пути.

У вас на первой строчке есть отступ (tab?), из-за этого может быть популярная ошибка (headers already send). Далее, закрывающий тег ?> не обязателен, если файл содержит только код php.

Автор: Johny_03 5.9.2014, 13:00
Ошибка была в адресе, это я исправил. Теперь выдает все-равно Fatal error: Call to undefined function geoip_open()
Как подключать такую функцию?

Позже попробовал разместить папку "gip" в корне, где index.php, в коде поменял адреса на geoip.inc geoipcity.inc geolitecity.dat
Теперь ошибку не выдает, но и скрипт тоже не работает, не делает редирект. Сайт просто открывается как и раньше, без скрипта.
В чем можно еще посмотреть?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)