Перейти к содержимому


Фото
* * * * * 6 голосов

Определение города посетителя


Best Answer insider , 26.10.2014 - 23:21

Готовый код вставки в любое место сайта с указанием города, региона и страны.

<script src="http://yastatic.net/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
  window.onload = function () {
      jQuery("#user-city").text(ymaps.geolocation.city);
      jQuery("#user-region").text(ymaps.geolocation.region);
	  jQuery("#user-country").text(ymaps.geolocation.country);
  }
</script>
<script src="http://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU" type="text/javascript"></script>
<div id="user-city"></div> <div id="user-region"></div> <div id="user-country"></div>
Перейти к посту


  • Чтобы отвечать, сперва войдите на форум
54 ответов в теме

#41 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 5 680 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 20.05.2017 - 13:07


Кто-то придумал как выкрутиться в Украине в связи с блокировкой Яши? Может есть аналоги по определению города?


Как это связано с Simpla CMS?

#42 Vladq

Vladq
  • Пользователь
  • 149 сообщений

Опубликовано 21.05.2017 - 01:16

Кто-то придумал как выкрутиться в Украине в связи с блокировкой Яши? Может есть аналоги по определению города?

 

Есть аналог. Держи

 

//Определение города по IP
    var user_ip = $('.user_ip span').text();
        $.get('http://api.sypexgeo.net/json/'+user_ip,
        function(data){
            $('.user_city').html('<strong></strong> '+data.city.name_ru);
        });

 

В нужном месте

<p class="user_city"></p> 

 

 

 



#43 tsybart

tsybart
  • Пользователь
  • 220 сообщений

Опубликовано 21.05.2017 - 21:13

Есть аналог. Держи

 

//Определение города по IP
    var user_ip = $('.user_ip span').text();
        $.get('http://api.sypexgeo.net/json/'+user_ip,
        function(data){
            $('.user_city').html('<strong></strong> '+data.city.name_ru);
        });

 

В нужном месте

<p class="user_city"></p> 

 

Спасибо! Но не будет работать. У вас еще перед этим выводится IP в .user_ip span

 

Выводите средствами simpla?


Изменено: tsybart, 21.05.2017 - 21:14


#44 mishanya

mishanya
  • Фрилансер
  • 2 318 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 21.05.2017 - 21:19

Спасибо! Но не будет работать. У вас еще перед этим выводится IP в .user_ip span

 

Выводите средствами simpla?

 

<div class="user_ip"><span>{$smarty.server.REMOTE_ADDR}</span></div>


#45 Vladq

Vladq
  • Пользователь
  • 149 сообщений

Опубликовано 21.05.2017 - 21:40

Спасибо! Но не будет работать. У вас еще перед этим выводится IP в .user_ip span

 

Выводите средствами simpla?


перед самим скриптом вставить где нибудь

<div id="user_ip" style="display: none;"><span>{$smarty.server.REMOTE_ADDR}</span></div>

Тогда

<p class="user_city"></p> 

Будет выводить само названия города.



Вот еще один альтернативный сервис, более шустрый, и более точный к украинским IP

 

 

<script>
     //Определение города по IP
    var user_ip = $('.user_ip span').text();
        $.get('http://api.2ip.ua/geo.json?ip='+user_ip,
        function(data){
            $('.user_city').html('<strong></strong> '+data.city_rus);
        });
      </script>


#46 tsybart

tsybart
  • Пользователь
  • 220 сообщений

Опубликовано 21.05.2017 - 22:55


перед самим скриптом вставить где нибудь

<div id="user_ip" style="display: none;"><span>{$smarty.server.REMOTE_ADDR}</span></div>

Тогда

<p class="user_city"></p> 

Будет выводить само названия города.



Вот еще один альтернативный сервис, более шустрый, и более точный к украинским IP

 

 

<script>
     //Определение города по IP
    var user_ip = $('.user_ip span').text();
        $.get('http://api.2ip.ua/geo.json?ip='+user_ip,
        function(data){
            $('.user_city').html('<strong></strong> '+data.city_rus);
        });
      </script>

 

спасибо!!

 

у этих ребят 2ip.ua бесплатно только до 100 запросов в день + нету https :(



#47 tsybart

tsybart
  • Пользователь
  • 220 сообщений

Опубликовано 21.05.2017 - 23:04

Кстати, у sypexgeo, есть сервер в Украине: https://ua.sxgeo.city/json/



#48 Otto

Otto
  • Пользователь
  • 2 сообщений
  • Пользователь
  • Откуда:Краснодар

Опубликовано 27.05.2017 - 08:18

Есть аналог. Держи

//Определение города по IP
    var user_ip = $('.user_ip span').text();
        $.get('http://api.sypexgeo.net/json/'+user_ip,
        function(data){
            $('.user_city').html('<strong></strong> '+data.city.name_ru);
        });
 
В нужном месте
<p class="user_city"></p> 


Спасибо! А как бы ещё все это дело кешировать? А то доходит до 30 просмотров на посетителя.

Изменено: Otto, 27.05.2017 - 08:29


#49 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 27.05.2017 - 10:10

Спасибо! А как бы ещё все это дело кешировать? А то доходит до 30 просмотров на посетителя.

 

В чистом виде никак. Надо программировать в PHP.

И к тому же для кеширования  намного лучше использовать сервисы, дающие в ответе диапазон IP, например http://ipgeobase.ru/.

Иначе эффективность будет весьма низкой...



#50 Otto

Otto
  • Пользователь
  • 2 сообщений
  • Пользователь
  • Откуда:Краснодар

Опубликовано 27.05.2017 - 17:54

Вот что то похожее... http://www.ipinfodb....on_api_json.php Если кто готов помочь с кешированием $$$ прошу в ЛС

#51 mar

mar
  • Пользователь
  • 7 сообщений
  • Дизайн, Программирование
  • Версия CMS:2.x
  • Откуда:UA

Опубликовано 09.06.2017 - 10:37

Вот что то похожее... http://www.ipinfodb....on_api_json.php Если кто готов помочь с кешированием $$$ прошу в ЛС

А что кешировать то?

Как часто чиcтить кеш будем?

---------------------------

Неуправляемый и быстрорастущий кеш могу привести код (ниже).

Чистить вызывая ф-цию clear_cache Можно кроном 1 раз в сутки - можно 1 раз в неделю ... и т .д.

 

Вот может старый классический способ кеширования , им даже DLE грешило.

 

$your_ip=$_SERVER['REMOTE_ADDR'];
/*Можно еще поизвращаться и пытаться определять другими переменными МИМО прокси*/
$cache_in=get_vars($your_ip);
/* Проверяю есть ли кеш с номером этого IP*/
if(!$cache_in){
/*Проверяем соответствие IP городу,стрне и записываем данные методом какой ВЫ выберете*/
$cache_in="/*Перечень данных ВАМ интересных*/";
set_vars($your_ip,$cache_in);
}
/*Выводим данные ВАМ интересные*/
print $cache_in;


/*Вспомогательные ф-ции**/
/*Убийца кеша*/
function clear_cache($cache_area = false){
$dir="."; //Путь где файлы кеша
    if ($cache_area){
    $filename = $dir.'/temp/cache/'.$cache_area.'.tmp';
    @unlink($filename);
    } else {
    $fdir = opendir($dir.'/tmp/cache');
    while ($file = readdir($fdir)){
        if ($file != '.' and $file != '..' and $file != '.htaccess' and $file != 'system'){
                    @unlink($dir.'/temp/cache/'.$file);
            }
        }
    }
}

/*Установим кеш на неопределенное время*/
function set_vars ($file="default", $data){
$dir="."; //Путь где файлы кеша
    @$filename = $dir.'/temp/cache/'.$file.'.tmp';

    $fp = @fopen($filename, 'wb+');
    @fwrite($fp, serialize($data) );
    @fclose($fp);

    @chmod($filename, 0666);
}

/*Возьмем данные если они есть*/
function get_vars ($file="default"){
$dir="."; //Путь где файлы кеша
    $filename = $dir.'/temp/cache/'.$file.'.tmp';

    if (!@filesize($filename)){
        return false;
    }

    return unserialize(file_get_contents($filename));

}

 


Изменено: mar, 09.06.2017 - 10:50


#52 Mila

Mila
  • Пользователь
  • 1 сообщений
  • Дизайн
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 24.08.2017 - 09:08

Спасибо! А как бы ещё все это дело кешировать? А то доходит до 30 просмотров на посетителя.

куда его поместить?)поясни плиз



#53 Chudo

Chudo
  • Пользователь
  • 59 сообщений
  • Откуда:Саратов

Опубликовано 14.09.2017 - 06:10

Друзья, привет! Помогите пожалуйста организовать работу скрипта таким образом, что бы заходя на сайт site.ru скрипт понимал что к нему зашли из региона "Х" и он оставлял нас на странице site.ru, зайдя из региона "Х2" нас перебрасывало на поддомен х2.site.ru, и заходя из региона "Х3" нас перебрасывало бы на поддомен х3.site.ru. Не пойму какое условие нужно написать.

Использую данный скрипт

 

<script src="http://yastatic.net/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
  window.onload = function () {
      jQuery("#user-region").text(ymaps.geolocation.region);
  }
</script>
<script src="http://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU" type="text/javascript"></script>
<div id="user-region"></div>

Изменено: Chudo, 14.09.2017 - 06:15


#54 loxter

loxter
  • Пользователь
  • 113 сообщений
  • Дизайн
  • Откуда:paris

Опубликовано 14.09.2017 - 09:29

reg=ymaps.geolocation.region
if(reg=='Курская область'){
location.href='//х2.site.ru/'
}
if(reg=='Брянская область'){
location.href='//х3.site.ru/'
}

#55 Chudo

Chudo
  • Пользователь
  • 59 сообщений
  • Откуда:Саратов

Опубликовано 14.09.2017 - 12:19

reg=ymaps.geolocation.region
if(reg=='Курская область'){
location.href='//х2.site.ru/'
}
if(reg=='Брянская область'){
location.href='//х3.site.ru/'
}


Спасибо большое, работает)






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых