<?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()); // Информация о базе данных
<?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;
/** * @param string $ip * * @return array|bool|mixed */ public function get($ip = '') { return $this->sxGeo->get($this->getIp($ip)); }
} 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']; $city = $o['city']; $stmt2 = $conn->prepare('UPDATE users_ips SET country = ?, city = ? WHERE id = ?'); $stmt2->execute(array($country, $city, $id)); } } $result['data'][] = array('id' => $id, 'ip' => $ip, 'country' => $country, 'city' => $city, 'date' => $row['date_sign_in'], 'browser' => $browser); } $result['result'] = 'ok'; } catch (PDOException $e) { APIHelpers::showerror(1146, $e->getMessage()); } unset($SxGeo); echo json_encode($result);