Проверка IP по стране и вывод

Рейтинг: 1Ответов: 1Опубликовано: 31.05.2011

Ребят, нужен такой скрипт, написаный либо на PHP, либо на JS, который бы проверял страну посетителя сайта по IP, и если ИП пренадлежит, например, России, то выводил нужный мне HTML код, а если пренадлежит, например, Беларуси, то производился вовод другого HTML кода.

UPD

Короче, ребята, поставил скрипт JS, не работает ни с условными операторами ни без них. Если с операторами то просто пропадает меню, которое я прячу под них, а без них тупо выводятся два блока.

<div class="geoip" id="country-ru">
    <h1>Блок для пользователей из России</h1>
  </div>

  <div class="geoip" id="country-other">
    <h1>Блок для остальных пользователей</h1>
  </div>

Движок uCoz.

Ответы

▲ 5Принят

Предлагаю ознакомиться с бесплатной GeoIP базой от MaxMind У этой базы есть API, как для PHP, так и для JavaScript. А так же есть модуль для Apache и nginx

Соответственно, в случае использования PECL расширения для PHP, скрипт будет выглядеть примерно так:

$country = geoip_country_code_by_name($_SERVER['REMOTE_ADDR']);
if ($country == 'RU') {
    header('Location: /index.ru.html', 302, true);
    exit;
}

Или рабочий пример на JavaScript:

<html>
<head>
  <title>Test GeoIP</title>
  <script type="text/javascript" src="http://j.maxmind.com/app/country.js"></script>
  <style type="text/css">
    .geoip { display: none; border: 1px solid #036; padding: 10px; margin: 10px; }
    p { font-size: 0.8em; text-align: center; }
  </style>
  <script type="text/javascript">
    function init() {
      var id = geoip_country_code() == 'RU' ? 'country-ru' : 'country-other';
      document.getElementById(id).style.display = 'block';
    }
  </script>
</head>
<body>

  <div class="geoip" id="country-ru">
    <h1>Блок для пользователей из России</h1>
  </div>

  <div class="geoip" id="country-other">
    <h1>Блок для остальных пользователей</h1>
  </div>

  <p>Лицензия использования JavaScript API требует наличия обратной ссылки на <a href="http://www.maxmind.com/">MaxMind</a></p>
</body>
</html>

Однако, с точки зрения производительности, лучше использовать модуль для Apache или nginx.