Otto Опубликовано 27 мая, 2017 Жалоба Поделиться Опубликовано 27 мая, 2017 Вот что то похожее... http://www.ipinfodb.com/ip_location_api_json.php Если кто готов помочь с кешированием $$$ прошу в ЛС Цитата Ссылка на сообщение Поделиться на другие сайты
mar Опубликовано 9 июня, 2017 Жалоба Поделиться Опубликовано 9 июня, 2017 (изменено) Вот что то похожее... http://www.ipinfodb.com/ip_location_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)); } Изменено 9 июня, 2017 пользователем mar Цитата Ссылка на сообщение Поделиться на другие сайты
Mila Опубликовано 24 августа, 2017 Жалоба Поделиться Опубликовано 24 августа, 2017 Спасибо! А как бы ещё все это дело кешировать? А то доходит до 30 просмотров на посетителя.куда его поместить?)поясни плиз Цитата Ссылка на сообщение Поделиться на другие сайты
Chudo Опубликовано 14 сентября, 2017 Жалоба Поделиться Опубликовано 14 сентября, 2017 (изменено) Друзья, привет! Помогите пожалуйста организовать работу скрипта таким образом, что бы заходя на сайт 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> Изменено 14 сентября, 2017 пользователем Chudo Цитата Ссылка на сообщение Поделиться на другие сайты
loxter Опубликовано 14 сентября, 2017 Жалоба Поделиться Опубликовано 14 сентября, 2017 reg=ymaps.geolocation.region if(reg=='Курская область'){ location.href='//х2.site.ru/' } if(reg=='Брянская область'){ location.href='//х3.site.ru/' } Цитата Ссылка на сообщение Поделиться на другие сайты
Chudo Опубликовано 14 сентября, 2017 Жалоба Поделиться Опубликовано 14 сентября, 2017 reg=ymaps.geolocation.regionif(reg=='Курская область'){location.href='//х2.site.ru/'}if(reg=='Брянская область'){location.href='//х3.site.ru/'} Спасибо большое, работает) Цитата Ссылка на сообщение Поделиться на другие сайты
Dmitry86 Опубликовано 2 декабря, 2017 Жалоба Поделиться Опубликовано 2 декабря, 2017 потому что айди должен быть уникальным у всех объектов. соответсвенно вы ставите три ссылки с одним айди и вам вставляет только на первую. для множества используйте классы. <script src="http://yastatic.net/jquery/2.1.1/jquery.min.js"></script> <script type="text/javascript"> window.onload = function () { if(ymaps.geolocation.region == 'Москва и Московская область'){ jQuery(".region-phone").text('+7 (495) 000-00-00'); jQuery(".region-phone-href").attr('href', 'tel:+78000000000'); } else { jQuery(".region-phone").text('+7 (800) 000-00-00'); jQuery(".region-phone-href").attr('href', 'tel:+78000000000'); } } </script> <script src="http://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU" type="text/javascript"></script> <a class="region-phone-href" href="#"><div class="region-phone"></div></a> Добрый день! Подскажите, пожалуйста, если необходимо, чтобы информация показывалась в зависимости не от одного города, а например, если город посетителя есть в списке городов (в массиве), то есть if(ymaps.geolocation.city == 'название города есть в массиве городов') Заране благодарю за помощь! Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 2 декабря, 2017 Жалоба Поделиться Опубликовано 2 декабря, 2017 Добрый день! Подскажите, пожалуйста, если необходимо, чтобы информация показывалась в зависимости не от одного города, а например, если город посетителя есть в списке городов (в массиве), то есть if(ymaps.geolocation.city == 'название города есть в массиве городов') Заране благодарю за помощь! var cities = ['Москва', 'Новоибирск', 'Казань']; if(cities.indexOf(ymaps.geolocation.city)>-1) { alert('Вы в нужном городе'); } Цитата Ссылка на сообщение Поделиться на другие сайты
Dmitry86 Опубликовано 2 декабря, 2017 Жалоба Поделиться Опубликовано 2 декабря, 2017 var cities = ['Москва', 'Новоибирск', 'Казань']; if(cities.indexOf(ymaps.geolocation.city)>-1) { alert('Вы в нужном городе'); } Спасибо Мишаня, большое! Я ещё вот такой вариант нашел, вроде тоже работает) <script type="text/javascript"> window.onload = function () { var cities = ['Москва','Воронеж','Магадан']; if(cities.join().search(ymaps.geolocation.city) != -1) { jQuery(".user-city").text('текст 1'); } else { jQuery(".user-city").text('текст 2'); } } </script> Цитата Ссылка на сообщение Поделиться на другие сайты
jonny008 Опубликовано 25 января, 2018 Жалоба Поделиться Опубликовано 25 января, 2018 Здравствуйте. Пытаюсь назначить город в переменную smarty. <script type="text/javascript"> window.onload = function () { var gorod; gorod = ymaps.geolocation.city; {assign var=user_region value = 'gorod'}; } </script> {$user_region} Вообще никак не работает. Вопрос конечно глупый, но с javascript вообще никак. Подскажите пожалуйста, что не так. Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 25 января, 2018 Жалоба Поделиться Опубликовано 25 января, 2018 Все не так...Смарти работает на сервере при генерации страницы, а джаваскрипт - в браузере юзера. Цитата Ссылка на сообщение Поделиться на другие сайты
jonny008 Опубликовано 25 июня, 2018 Жалоба Поделиться Опубликовано 25 июня, 2018 Все не так...Смарти работает на сервере при генерации страницы, а джаваскрипт - в браузере юзера.Получилось вот так вывести в переменную: $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = @$_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)) $ip = $client; elseif(filter_var($forward, FILTER_VALIDATE_IP)) $ip = $forward; else $ip = $remote; echo $ip; include("SxGeo.php"); $SxGeo = new SxGeo('SxGeoCity.dat'); $data = $SxGeo->get($ip); $city = $data['city']['name_ru']; $this->design->assign('city', $city); Цитата Ссылка на сообщение Поделиться на другие сайты
doni031 Опубликовано 25 августа, 2018 Жалоба Поделиться Опубликовано 25 августа, 2018 А можно сделать так чтобы когда пользователь первый раз заходит на сайт выбирает город из списка и его город как-то запоминался? Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 25 августа, 2018 Жалоба Поделиться Опубликовано 25 августа, 2018 Конечно, можно.Например, по аналогии с тем, как стандартно выбираются валюты... Цитата Ссылка на сообщение Поделиться на другие сайты
jonny008 Опубликовано 9 декабря, 2018 Жалоба Поделиться Опубликовано 9 декабря, 2018 Немного другое решение для вывода переменной в шаблон. Скачиваем SxGeo.php и SxGeoCity.dat с сайта http://sypexgeo.net/ru/download/ В файле IndexView.php после строки: $this->design->assign('module', $module); Пишем: $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = @$_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)) $ip = $client; elseif(filter_var($forward, FILTER_VALIDATE_IP)) $ip = $forward; else $ip = $remote; //echo $ip; include("SxGeo.php"); $SxGeo = new SxGeo('SxGeoCity.dat'); $data = $SxGeo->get($ip); $city = $data['city']['name_ru']; $this->design->assign('city', $city); В шаблоне выводим переменной {$city} Определяет город с точностью 99%. Цитата Ссылка на сообщение Поделиться на другие сайты
Dmitry86 Опубликовано 2 ноября, 2019 Жалоба Поделиться Опубликовано 2 ноября, 2019 Немного другое решение для вывода переменной в шаблон. Скачиваем SxGeo.php и SxGeoCity.dat с сайта http://sypexgeo.net/ru/download/ В файле IndexView.php после строки: $this->design->assign('module', $module); Пишем: $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = @$_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)) $ip = $client; elseif(filter_var($forward, FILTER_VALIDATE_IP)) $ip = $forward; else $ip = $remote; //echo $ip; include("SxGeo.php"); $SxGeo = new SxGeo('SxGeoCity.dat'); $data = $SxGeo->get($ip); $city = $data['city']['name_ru']; $this->design->assign('city', $city); В шаблоне выводим переменной {$city} Определяет город с точностью 99%. Спасибо за отличное решение! Только не получается вывести {$city} в шаблон.. Пытаюсь вывести в product.tpl В IndexView.php сделал как указано. После: $this->design->assign('module', $module); вставил: // Определение города посетителя по IP $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = @$_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)) $ip = $client; elseif (filter_var($forward, FILTER_VALIDATE_IP)) $ip = $forward; else $ip = $remote; include("SxGeo/SxGeo.php"); $SxGeo = new SxGeo('SxGeo/SxGeoCity.dat'); $data = $SxGeo->get($ip); $city = $data['city']['name_ru']; // Передаем название города в шаблон $this->design->assign('city', $city); И вместо города в шаблоне пусто.. Создал в корне сайта тестовый файлик: <?PHP // Определение города посетителя по IP $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = @$_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)) $ip = $client; elseif (filter_var($forward, FILTER_VALIDATE_IP)) $ip = $forward; else $ip = $remote; echo $ip; include("SxGeo/SxGeo.php"); $SxGeo = new SxGeo('SxGeo/SxGeoCity.dat'); $data = $SxGeo->get($ip); $city = $data['city']['name_ru']; echo $city; Он отображает ip и город. Не пойму, что не правильно сделал.. Подскажите, пожалуйста! Цитата Ссылка на сообщение Поделиться на другие сайты
Dmitry86 Опубликовано 2 ноября, 2019 Жалоба Поделиться Опубликовано 2 ноября, 2019 (изменено) Спасибо за отличное решение! Только не получается вывести {$city} в шаблон.. Пытаюсь вывести в product.tpl В IndexView.php сделал как указано. После: $this->design->assign('module', $module);вставил: // Определение города посетителя по IP $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = @$_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)) $ip = $client; elseif (filter_var($forward, FILTER_VALIDATE_IP)) $ip = $forward; else $ip = $remote; include("SxGeo/SxGeo.php"); $SxGeo = new SxGeo('SxGeo/SxGeoCity.dat'); $data = $SxGeo->get($ip); $city = $data['city']['name_ru']; // Передаем название города в шаблон $this->design->assign('city', $city);И вместо города в шаблоне пусто.. Создал в корне сайта тестовый файлик: get($ip); $city = $data['city']['name_ru']; echo $city;Он отображает ip и город. Не пойму, что не правильно сделал.. Подскажите, пожалуйста! Разобрался. Сделал немного иначе. в файле View.php после self::$view_instance = $this;вставил if (!empty($_SERVER['HTTP_X_REAL_IP'])) { $client_ip = $_SERVER['HTTP_X_REAL_IP']; } elseif (!empty($_SERVER['HTTP_CLIENT_IP'])) { $client_ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $client_ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $client_ip = $_SERVER['REMOTE_ADDR']; } if(filter_var($client_ip, FILTER_VALIDATE_IP)) $this->current_ip = $client_ip; include("SxGeo/SxGeo.php"); $SxGeo = new SxGeo('SxGeo/SxGeoCity.dat'); $data_ip = $SxGeo->get($this->current_ip); $user_city = $data_ip['city']['name_ru']; //var_dump($user_city); // Записать город в куки //setCookie("user_city", $user_city, time()+86400,'/'); // Передаем название города в шаблон $this->design->assign('user_city', $user_city);Теперь в любом шаблоне работает переменная {$user_city} Если надо записывать город пользователя в куки, то раскомментируйте строчку: //setCookie("user_city", $user_city, time()+86400,'/');и можете поменять время, на которое они устанавливаются. 86400 - это сутки. Чтобы потом в шаблоне вызвать город из куки, то используйте {$smarty.cookies.user_city|urldecode} И ещё обратите внимание, что у меня сервер настроен так, что $_SERVER['REMOTE_ADDR']; отдает адрес самого сервака, поэтому я поставил его в условии последним, чтобы ip не был пустой, если вдруг он не определился у пользователя. Здесь можете делать как вам нужнее. Вроде всё. Изменено 2 ноября, 2019 пользователем Dmitry86 Цитата Ссылка на сообщение Поделиться на другие сайты
Morfeus Опубликовано 28 января, 2020 Жалоба Поделиться Опубликовано 28 января, 2020 Добрый день, подскажите чайнику начинающему, вставил код в шаблон файл index.tpl, ничего не выводится. Заключал в {literal} Цитата Ссылка на сообщение Поделиться на другие сайты
Kasha Опубликовано 19 февраля, 2020 Жалоба Поделиться Опубликовано 19 февраля, 2020 Добрый день, подскажите чайнику начинающему, вставил код в шаблон файл index.tpl, ничего не выводится. Заключал в {literal}ссылку пришлите, надо проверять, ошибок может быть уйма в таком подключении..Самое первое что приходит на ум - двойное подключение jquery... Цитата Ссылка на сообщение Поделиться на другие сайты
maxwelhoue Опубликовано 27 января, 2021 Жалоба Поделиться Опубликовано 27 января, 2021 В 02.11.2019 в 23:49, Dmitry86 сказал: Скачиваем SxGeo.php и SxGeoCity.dat с сайта http://sypexgeo.net/ru/download На основе Sypexgeo на сайте реализовано переадресация на поддомены (регионы РФ). Кто может помочь с реализацией вывода модального окна с запросом - Правильно ли определен Ваш город (выберете из списка, в случае не верного определения). Интересует качественная ПЛАТНАЯ доработка. Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 27 января, 2021 Жалоба Поделиться Опубликовано 27 января, 2021 А в чём доработка заключается? Просто выводить модальное окно при первой загрузке страницы и чтобы человек сделал выбор сохранив его? Цитата Ссылка на сообщение Поделиться на другие сайты
maxwelhoue Опубликовано 27 января, 2021 Жалоба Поделиться Опубликовано 27 января, 2021 51 минуту назад, a13x сказал: А в чём доработка заключается? Просто выводить модальное окно при первой загрузке страницы и чтобы человек сделал выбор сохранив его? Да, все верно. Сделав выбор он будет переадресован на соответсвующий поддомен сайта. Цитата Ссылка на сообщение Поделиться на другие сайты
NiHaTiM Опубликовано 10 мая, 2021 Жалоба Поделиться Опубликовано 10 мая, 2021 Подскажите сейчас эта функция работает? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.