public function onBeforeStartComponent() { $db = JFactory::getDBO(); $session = JFactory::getSession(); $user_region = $session->get('user_region', 0); $phone_code = $session->get('phone_code', ''); if (empty($user_region)) { $user_region = 0; require_once dirname(__FILE__) . '/helpers/geo.php'; $SxGeo = new SxGeo(dirname(__FILE__) . '/helpers/SxGeoCity.dat', SXGEO_BATCH | SXGEO_MEMORY); $data = $SxGeo->getCityFull($_SERVER['HTTP_X_REAL_IP']); $region = isset($data['region']['name_ru']) ? $data['region']['name_ru'] : ''; if ($region != '') { $query = $db->getQuery(true); $query->select('id')->from('#__ksenmart_regions')->where('title=' . $db->quote($region)); $db->setQuery($query, 0, 1); $user_region = (int) $db->loadResult(); } $session->set('user_region', $user_region); $country = isset($data['country']['name_ru']) ? $data['country']['name_ru'] : ''; if ($country != '') { $query = $db->getQuery(true); $query->select('phone_code')->from('#__ksenmart_countries')->where('title=' . $db->quote($country)); $db->setQuery($query, 0, 1); $phone_code = $db->loadResult(); } $session->set('phone_code', $phone_code); unset($SxGeo); } }
public function index($page, $city = null) { //var_dump($city); if ($this->session->userdata('city') == '') { include $_SERVER['DOCUMENT_ROOT'] . "/geo/SxGeo.php"; $SxGeo = new SxGeo($_SERVER['DOCUMENT_ROOT'] . '/geo/SxGeoCity.dat'); $ip = $_SERVER['REMOTE_ADDR']; $cityByIp = $SxGeo->getCityFull($ip); $city = $cityByIp['city']; $this->load->library('geo'); $cityInfo = $this->geo->getCityIdByRussianName($city['name_ru']); } else { $cityBySlug = $this->model_pages->getCityIdBySlug($this->session->userdata('city')); $cityInfo = $this->model_pages->getCityInfoById($cityBySlug); $city = $cityInfo['slug']; } //var_dump($cityByIp); $data['city_name'] = $cityInfo['name_vp']; $data['city_exist'] = $cityInfo['name']; $data['city'] = $city; $data['city_name_pp'] = $cityInfo['name_pp']; $data['newPos'] = $this->getNewPositions(); //var_dump($this->session->userdata()); $data['siteRoot'] = '/'; $data['base_url'] = '/' . $city . '/'; $data['addonFiles'] = '<link href="' . $data['siteRoot'] . '/frontend/qroomblock/css/modal.css" rel="stylesheet">'; $data['addonScripts'] = ''; $data['page'] = $this->model_pages->getPageByUrl($page); //$data['page'] = str_replace('*nic*', , ); if ($page == 'megaquest') { $name = ''; if ($this->session->userdata('user_name') != "") { switch ($this->session->userdata('user_type')) { case 2: $table = 'mako_Costumers'; break; case 1: $table = 'mako_userTable'; break; } $name = $this->model_pages->getUserNameByEmail($table, $this->session->userdata('user_name')); $data['page'] = str_replace('*nic*', $name, $data['page']); } //var_dump($name); $data['description'] = "Я на квестура – " . $name . ". Хочу участвовать в Мегаквесте Екабу. Поддержи меня лайком! #мегаквестекабу"; } //var_dump($this->session->userdata()); $this->load->view('header', $data); $this->load->view('pageView', $data); $this->load->view('footer'); }
/** * @return array */ public function getCityFull() { if (!$this->SxGeo) { $this->loadSxGeo(); } return $this->SxGeo->getCityFull($this->getUserIp()); }
public static function getCityByIP($ip = null) { require_once _PS_ROOT_DIR_ . "/tools/SxGeo/SxGeo.php"; if (!$ip) { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip = $_SERVER['REMOTE_ADDR']; } //Марик НЕ ЗАБУДЬ УБРАТЬ БЛЯТЬ //$ip = '46.162.1.95'; } if ($ip == '127.0.0.1') { $ip = '46.162.1.95'; } $SxGeo = new SxGeo(_PS_ROOT_DIR_ . '/tools/SxGeo/SxGeoCity.dat', SXGEO_BATCH | SXGEO_MEMORY); // Самый быстрый режим $city = $SxGeo->getCityFull($ip); return $city; }
// сверяем маркеры: $save_marker = isset($_COOKIE['marker']) ? trim(strip_tags($_COOKIE['marker'])) : ''; if (@trim($_POST['marker']) != $save_marker) { die(json_encode('marker')); } // открытие во фрейме это плохо: if (@trim($_POST['iframe']) != '0') { die(json_encode('iframe')); } // метод (GET или POST) if (@$_POST['method'] != 'GET') { die(json_encode('method')); } // получаем страну юзера: include 'SxGeo.php'; $SxGeo = new SxGeo('SxGeo.dat', SXGEO_FILE); $country = @mb_strtolower($SxGeo->getCountry($ip), 'utf-8'); // детектируем AdBlock if (@$_POST['adb'] == '1') { $save_adblock = '1'; } else { $save_adblock = '0'; } // язык браузера $save_language = @trim(strip_tags($_POST['language'])); // поддерживается ли куки if (@$_POST['cookietrue'] == 'true') { $save_cookietrue = '1'; } else { $save_cookietrue = '0'; }
<?php // Пример работы с классом SxGeo v2.2 header('Content-type: text/plain; charset=utf8'); // Подключаем SxGeo.php класс include "SxGeo.php"; // Создаем объект // Первый параметр - имя файла с базой (используется оригинальная бинарная база SxGeo.dat) // Второй параметр - режим работы: // SXGEO_FILE (работа с файлом базы, режим по умолчанию); // SXGEO_BATCH (пакетная обработка, увеличивает скорость при обработке множества IP за раз) // SXGEO_MEMORY (кэширование БД в памяти, еще увеличивает скорость пакетной обработки, но требует больше памяти) $SxGeo = new SxGeo('SxGeoCity.dat'); //$SxGeo = new SxGeo('SxGeoCity.dat', SXGEO_BATCH | SXGEO_MEMORY); // Самый производительный режим, если нужно обработать много IP за раз $ip = $_SERVER['REMOTE_ADDR']; //var_export($SxGeo->getCityFull($ip)); // Вся информация о городе var_export($SxGeo->get($ip)); // Краткая информация о городе или код страны (если используется база SxGeo Country) //var_export($SxGeo->about()); // Информация о базе данных
/** * @param string $ip * * @return number */ public function getCountryId($ip = '') { return $this->sxGeo->getCountryId($this->getIp($ip)); }
protected function find($ip = null) { $geo = new SxGeo($this->db_location); $location = $geo->getCityFull($ip); return $location; }
<?php $cookie = json_decode($_POST['json']); define('__ROOT__', $_SERVER['DOCUMENT_ROOT']); require_once __ROOT__ . '/medoo.min.php'; require_once __ROOT__ . '/config.php'; $database = new medoo(array('database_type' => $config_db['database_type'], 'database_name' => $config_db['database_name'], 'server_name' => $config_db['server_name'], 'username' => $config_db['username'], 'password' => $config_db['password'], 'charset' => $config_db['charset'])); $arr = array(); foreach ($cookie as $val) { $arr[] = $database->select("catalog", array("[>]catecory" => array('category' => 'id')), array('catalog.id', 'catalog.name', 'catalog.chpu', 'catalog.price', 'catecory.chpu(cat_chpu)', 'catalog.image', 'catalog.local_price'), array("catalog.id" => $val->id)); } //print_r($arr); //делаем скидку для локалей require_once __ROOT__ . '/location/SxGeo.php'; $SxGeo = new SxGeo(__ROOT__ . '/location/SxGeo.dat'); $ip = $_SERVER['REMOTE_ADDR']; $city = $SxGeo->get($ip); $datas_disc = $database->select("location_discount", '*', array('city' => $city['city']['name_en'])); if (count($datas) == 0) { $datas_disc = $database->select("location_discount", '*', array('city' => 'Other')); } //учтем скидку вы цене товара foreach ($arr as &$val) { if ($val[0]['local_price'] == 1) { $val[0]['price'] = $val[0]['price'] - $datas_disc[0]['discount'] * $val[0]['price'] / 100; } } //print_r($datas_disc); //print_r($arr); $res = json_encode($arr); echo $res;
/** * @return array */ public function getCityFull() { return $this->SxGeo->getCityFull($this->getUserIp()); }
<?php // Пример работы с классом SxGeo v2.2 header('Content-type: text/plain; charset=utf8'); // Подключаем SxGeo.php класс include "SxGeo.php"; // Создаем объект // Первый параметр - имя файла с базой (используется оригинальная бинарная база SxGeo.dat) // Второй параметр - режим работы: // SXGEO_FILE (работа с файлом базы, режим по умолчанию); // SXGEO_BATCH (пакетная обработка, увеличивает скорость при обработке множества IP за раз) // SXGEO_MEMORY (кэширование БД в памяти, еще увеличивает скорость пакетной обработки, но требует больше памяти) $SxGeo = new SxGeo('SxGeoCity.dat'); //$SxGeo = new SxGeo('SxGeoCity.dat', SXGEO_BATCH | SXGEO_MEMORY); // Самый производительный режим, если нужно обработать много IP за раз $ip = $_SERVER['REMOTE_ADDR']; var_export($SxGeo->getCityFull($ip)); // Вся информация о городе var_export($SxGeo->get($ip)); // Краткая информация о городе или код страны (если используется база SxGeo Country) var_export($SxGeo->about()); // Информация о базе данных
public function index($city = false, $page = 1, $sort = "rating", $filter = null) { //var_dump($_GET); $data['sort'] = $sort; if ($sort == "costASC") { $sort = "cost ASC"; } if ($sort == "costDESC") { $sort = "cost DESC"; } $cityCheck = $this->model_welcome->checkCity($city); if (!$cityCheck) { $this->session->set_userdata('city', ''); show_404(); die; } if (isset($_GET['ref'])) { $this->session->set_userdata('ref', $_GET['ref']); } if (!$city) { //var_dump($this->session->userdata('city')); if ($this->session->userdata('city')) { $city = $this->session->userdata('city'); } //redirect('/ekb/', 'refresh'); } if (!file_exists($city . '/')) { $city = $city; //$this->city = $this->session->userdata('city'); } $this->session->set_userdata('city', ''); include $_SERVER['DOCUMENT_ROOT'] . "/geo/SxGeo.php"; $SxGeo = new SxGeo($_SERVER['DOCUMENT_ROOT'] . '/geo/SxGeoCity.dat'); $ip = $_SERVER['REMOTE_ADDR']; if ($this->session->userdata('city') == 'uploads') { $this->session->set_userdata('city', ''); $city = ''; } //var_dump($city, $this->session->userdata('city')); $cityByIp = $SxGeo->getCityFull($ip); //var_dump($cityByIp); //var_dump($cityByIp); $slug = $this->model_welcome->getSlugByName($cityByIp['city']['name_ru']); if ($slug['name'] == '') { $slug['name'] = 'Москва'; $slug['slug'] = 'moscow'; } elseif (!$slug) { $slug['name'] = 'Москва'; $slug['slug'] = 'moscow'; } //$slug['name'] = 'Москва'; //$slug['slug'] = 'moscow'; $data['mayBeCity'] = $slug; $this->load->library('geo'); $data['allCity'] = $this->geo->getAllCity(); $cityInfo = $this->geo->getCityIdByName($city); $this->session->set_userdata('city', $city); if (!$city) { $city = $cityInfo['slug']; } else { $data['title'] = "Квесты в реальности " . $cityInfo['name_pp'] . " - Questura.ru"; } //var_dump($city,$cityInfo); //var_dump($city, $this->session->userdata('city')); //var_dump($cityInfo); //var_dump($page); $idsArray = $this->model_welcome->getUsersByCity($cityInfo['id_region']); if (is_array($idsArray)) { $ids = implode(' , ', $idsArray); $data['rooms'] = $this->model_welcome->getRoomsByUsers($ids, null, $page, $sort, $filter); } else { $ids = ''; $data['rooms'] = array(); } $data['roomsCount'] = $this->model_welcome->getCountRoomsByUsers($ids); $data['AllroomsCount'] = $this->model_welcome->getCountRoomsByUsers($ids, null, $filter); //var_dump($data['roomsCount']); if ($this->onPage > $data['roomsCount']) { $data['roomsCount'] = false; } //var_dump($this->onPage,$data['roomsCount']); if (!$idsArray || count($idsArray) == 0) { //show_404(); //die(); } //var_dump($cityInfo); if ($cityInfo['name_vp'] == '') { $cityInfo['name_vp'] = 'Вашего города'; } if ($cityInfo['name_pp'] == '') { $cityInfo['name_pp'] = 'в вашем городе'; } $data['city_parentId'] = $cityInfo['id_parent']; $data['city_id'] = $cityInfo['id_region']; $data['city_name'] = $cityInfo['name_vp']; $data['city_name_pp'] = $cityInfo['name_pp']; $data['city_exist'] = $cityInfo['name']; //var_dump($city); //$sort = false; switch ($sort) { case 'enters': $data['titleOnPage'] = 'Популярные квесты ' . $data['city_name']; break; case 'id': $data['titleOnPage'] = 'Новые квесты ' . $data['city_name']; break; default: $data['titleOnPage'] = 'Лучшие квесты ' . $data['city_name']; } //var_dump($sort); $data['city'] = $city; $data['base_url'] = '/' . $city . '/'; $data['siteRoot'] = ''; $data['newPos'] = $this->getNewPositions(); //$this->model_welcome->getNew($data['city_id']); //var_dump($data['newPos']); $data['addonFiles'] = ''; $data['addonScripts'] = '<script src="' . $data['siteRoot'] . '/frontend/header/js/showmore.js"></script>'; $hasSort = ''; if ($data['sort'] != 'rating') { $hasSort = $data['sort'] . '/'; } if ($filter) { $hasSort = 'quest/' . $filter; } $this->load->library('pagination'); $config['base_url'] = '/' . $city . '/' . $hasSort; $config['total_rows'] = $data['AllroomsCount']; $config['per_page'] = 12; $config['first_link'] = ''; $config['last_link'] = ''; $config['num_tag_open'] = '<li>'; $config['num_tag_close'] = '</li>'; $config['cur_tag_open'] = '<li class="active"><a href="#">'; $config['cur_tag_close'] = '</a></li>'; $this->pagination->initialize($config); $data['pages'] = $this->pagination->create_links(); //$data['user_name'] = $this->model_welcome->getUserNameByEmail(); //var_dump($data['pages']); $this->load->view('header', $data); $this->load->view('welcome_message', $data); $this->load->view('footer'); }
<?php // Если страна не определилась $COUNTRY_DEFAULT = 'ua'; $CITY_DEFAULT = 'kharkiv'; // Детект страны и города по IP // Docs: https://sypexgeo.net/ru/docs/ include 'inc/vendor/SxGeo.php'; $SxGeo = new SxGeo('inc/vendor/SxGeoCity.dat'); $geo = $SxGeo->getCity($_SERVER['REMOTE_ADDR']); $country = $geo ? strtolower($geo['country']['iso']) : $COUNTRY_DEFAULT; $city = $geo ? strtolower($geo['city']['name_en']) : $CITY_DEFAULT; ?> <script> // Detect user's preferred language (from browser & OS settings) // More info: https://alicoding.com/detect-browser-language-preference-in-firefox-and-chrome-using-javascript/ var langPreferred = window.navigator.languages ? window.navigator.languages[0] : null; langPreferred = langPreferred || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage; if (langPreferred.indexOf('-') !== -1) langPreferred = langPreferred.split('-')[0]; if (langPreferred.indexOf('_') !== -1) langPreferred = langPreferred.split('_')[0]; $('body').addClass('-langPreferred_'+langPreferred); </script> <?php /* Если вам нужно, можете сделать редирект по условию: if ($country == 'ua') {
public function getLocation($ip) { return $this->sxGeo->getCityFull($ip); }
$result = array('result' => 'fail', 'data' => array()); $result['result'] = 'ok'; if (!APISecurity::isAdmin()) { APIHelpers::showerror(1143, 'Access only for admin'); } // TODO: added pagginator $conn = APIHelpers::createConnection($config); if (!APIHelpers::issetParam('userid')) { APIHelpers::showerror(1144, 'Not found parameter userid'); } $userid = APIHelpers::getParam('userid', 0); if (!is_numeric($userid)) { APIHelpers::showerror(1145, 'incorrect userid'); } include_once dirname(__FILE__) . '/../api.lib/SxGeo.php'; $SxGeo = new SxGeo(dirname(__FILE__) . '/../api.lib/SxGeoCity.dat', SXGEO_BATCH | SXGEO_MEMORY); $userid = intval($userid); $query = 'SELECT id, ip, country, city, browser, date_sign_in FROM users_ips WHERE userid = ? ORDER BY id DESC LIMIT 0,25'; try { $stmt = $conn->prepare($query); $stmt->execute(array(intval($userid))); while ($row = $stmt->fetch()) { $country = $row['country']; $city = $row['city']; $id = $row['id']; $ip = $row['ip']; $browser = $row['browser']; if (strlen($country) == 0 && strlen($city) == 0) { $o = $SxGeo->get($ip); if ($o) { $country = $o['country'];
/** * Returns extended city info array for given IP address * * Sample array: * ( * [regid] => 9737 * [cc] => 185 * [fips] => 66 * [lat] => 60.076238 * [lon] => 30.121382 * [country] => RU * [city] => Санкт-Петербург * [region_name] => Санкт-Петербург * [timezone] => * ) * @param string $ip IP address in xxx.xxx.xxx.xxx notation * @return array Array with city info */ function sx_getCityInfoExt($ip = null) { global $SxCity, $sx_bulkmode, $sx_city, $sx_ip; if (is_null($ip)) { $ip = $sx_ip; } if (!$SxCity) { $SxCity = new SxGeo('plugins/sxgeo/data/SxGeoCity.dat'); } // Режим по умолчанию, файл бд SxGeo.dat $sx_city['ext_info'] = $result = @$SxCity->getCityFull($ip); // возвращает полную информацию о городе и регионе if (!$sx_bulkmode) { unset($SxCity); } return $result; }