Intereting Posts
Доступ к данным, отправленным sendBeacon htmlentities () делает китайские символы непригодными для использования Модуль против контроллера php exec возвращает меньше результатов, чем непосредственно в командной строке Как настроить расширения доктрины в Zend Framework 2? Как php оценивает выражение $ x +++ $ x ++? CakePHP – Как я могу определить маршрут к файлу non-cakephp, который не имеет каких-либо контроллеров, связанных с ним? Группируйте по часам дня, а затем Count # в каждой группе Ошибки обработки PHP php Предупреждение: strtotime () Ошибка Почему Phing запускает мой файл build.xml, а затем говорит, что его не существует? Можно ли проверить, существует ли установленный ключ Redis, и если он не существует, установите его, если он существует, а затем выйдите, все как транзакция Автоматическое выключение мини-корзины через 2 секунды в WooCommerce сортировка массива php внутри массива на основе значения Как выполнить модульное тестирование

Как отслеживать страну посетителя и перенаправлять их на соответствующие сайты?

Я хочу отслеживать страну посетителей, а затем перенаправить их в соответствующие поддомены моего сайта, например, что делает Google …

И до какой степени я могу полагаться на данные api, если я должен использовать какие-либо? ..

Я использую php ..

Загрузите и установите базу данных GeoLite Country от Maxmind , которая требует точности 99,5%. Вы можете заплатить за обновление до платной версии с заявленной точностью 99,8%. Существует четыре варианта использования базы данных из PHP:

  1. Загрузите CSV-файл и импортируйте его в свою базу данных SQL по вашему выбору. Это самый медленный вариант и имеет уродливый API. Я бы не рекомендовал его, но его включили для полноты.
  2. Загрузите чистый PHP-класс, который может читать файл базы данных. Это обеспечивает хороший API, чем SQL-вариант, но все еще немного медленный. Существуют версии для PHP4 и PHP5
  3. Загрузите и установите модуль расширения C для PHP . Это имеет то преимущество, что имеет приятный интерфейс и хорошую производительность. Однако сложнее установить, чем чистый PHP-класс, поэтому вам может потребоваться проверить с вашей хостинговой компанией. Если вам повезет, возможно, он уже установлен.
  4. Если вам нужна невероятно быстрая производительность, переходите к модулю Apache . Это сложнее всего установить, но и самый быстрый вариант.

Все эти опции имеют метод получения кода страны. Я не буду включать SQL-вариант, но вы можете получить дополнительную информацию здесь .

Чистый PHP4:

include("geoip.inc"); $gi = geoip_open("/usr/local/share/GeoIP/GeoIP.dat",GEOIP_STANDARD); $code = geoip_country_code_by_addr($gi, "24.24.24.24"); 

Расширение PECL PHP:

 $code = geoip_country_code_by_name($_SERVER['REMOTE_ADDR']); 

Модуль Apache:

 $code = apache_note("GEOIP_COUNTRY_CODE"); 

Затем вы можете перенаправить на основе этих кодов, используя перенаправление HTTP:

  $redirect = array("AU" => "http://australia.example.com", "NZ" => "http://newzealand.example.com") $url = $redirect[$code] header("Location: $url"); 

Однако это вызывает два HTTP-запроса и, следовательно, является субоптимальным. Лучше всего использовать модуль Apache для перезаписи в файле .htaccess :

 GeoIPEnable On GeoIPDBFile /path/to/GeoIP.dat # Redirect one country RewriteEngine on RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA RewriteRule ^(.*)$ http://www.canada.com$1 [L] # Redirect multiple countries to a single page RewriteEngine on RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CA|US|MX)$ RewriteRule ^(.*)$ http://www.northamerica.com$1 [L] 

Конечно, возможно лучший способ сделать это – заставить кого-то другого сделать это за вас, на уровне DNS. Быстрый поиск показал эту компанию (я понятия не имею, хороши они или нет), несомненно, есть и другие. Так Google это делает.

В зависимости от гранулярности, с которой вы хотите разделить свой «мир» клиента и количества возможных целей (поддоменов), вы могли бы использовать данные, предоставленные в базе данных IP-to-country или в бесплатной базе данных Geomocation от MaxMind.com, SQL, а затем используйте небольшой скрипт для выполнения поиска на IP-адресе посетителя и при необходимости перенаправите.

Данные никогда не будут на 100% точными, особенно если кто-либо из ваших посетителей обратится к вашему сайту через прокси или другие анонимные лица (в этом случае IP-адрес, который вы видите, не является их истинным адресом). Если вы это сделаете, я бы предложил, чтобы пользователь мог исправить (или просто переопределить) региональное перенаправление.

Если вам не нравится его кодирование, у Evan есть классный сценарий под названием Lambda GeoIP! Проверьте это здесь: http://www.lambdageoip.com

Lambda GeoIP – это полностью собственный сценарий геотаргетинга, который вы можете использовать на своем веб-сайте для определения географического местоположения ваших посетителей. В дополнение к этому вы можете определить, находится ли пользователь на мобильном устройстве, боте или использовании спутникового соединения.

Вы также можете пересылать пользователей на разные страницы на основе своего континента, страны, региона или города.

Все функции могут быть использованы на вашем сайте только с одной строкой кода на PHP.

Lambda GeoIP не «звонит домой», загружает удаленный контент или обменивается данными с любым другим сервером. Это безопасно и полностью самообслуживается.

Если вы не против загрузки, установки и поддержания актуальной базы данных ip на вашем сервере, то решение Fmark является лучшим с точки зрения производительности. В противном случае вы можете использовать услугу перенаправления, например, http://www.redirectbycountry.com

Одна из версий заключается в том, что вы можете использовать IP-адрес поставщика услуг и, следовательно, перенаправить его с помощью Javascript следующим образом;

 $.get("https://ipinfo.io", function(response) { if(response.country=="GB"){ window.location.replace("http://stackoverflow.com"); } }, "jsonp");