Определение города по IP

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
palaum
Forum Members
Forum Members
Posts: 63
Joined: Tue Feb 02, 2010 10:46 am

Определение города по IP

Post by palaum »

Для реализации данной задачи мы воспользуемся сервисом от Sypex, будем использовать его API

По желанию, можно узнать не только город, но другие полезные данные.

API имеет ограничение на кол-во запросов, но при регистрации оно становится менее ощутимо, в любом случае, для небольших проектов возможности хватит более чем.

Создадим в расширениях UDT (тег пользователя) с названием get_user_city, для удобства заполним описание «Определение города пользователя», а далее сам код:

Code: Select all

// Sypex Geop API http://sypexgeo.net/ru/api/
// Базовая часть URL к API
$baseurl = "http://api.sypexgeo.net";

// Ключ API, который выдается после регистрации
$apiKey = "#####";

// Узнаем 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'];
}

// Делаем полное URL к API
$url = "$baseurl/$apiKey/json/$ip";

// Получаем данные с URL к API
$result = file_get_contents($url);

// Обрабатываем данные и сохраняем название города в отдельную переменную
$result = json_decode($result);
$userCity = $result->{'city'}->{'name_ru'};

// Создаем переменную Smarty и помещаем в нее название города
$smarty->assign('userCity', $userCity);
Теперь мы можем узнать город пользователя и, например, подставить его в поле формы, созданной через FormBuilder:

Code: Select all

{get_user_city}
{FormBuilder form='order' value_fld29=$userCity}
Post Reply

Return to “Russian - русский”