Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Скрипт геотаргетинга. Геотаргетинг для сайта
Когда Вам понадобится геотаргетинг для сайта, т.е. когда Вам будет нужно определить откуда ваш посетитель, чтобы предложить ему зависимые от его города условия, Вы можете воспользоваться представленным здесь скриптом геотаргетинга.
Для получения гео-положения посетителя Вы можете воспользоваться следующим скриптом геотаргетинга на основе API
<?
echo file_get_contents('http://htmlweb.ru/geo/api.php?html&ip='.get_ip().'&api_key=API_KEY_из_профиля');
function get_ip(){
$ipa=[];
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))$ipa[] = trim(strtok($_SERVER['HTTP_X_FORWARDED_FOR'], ','));
if(isset($_SERVER['HTTP_CLIENT_IP']))$ipa[] = $_SERVER['HTTP_CLIENT_IP'];
if(isset($_SERVER['REMOTE_ADDR']))$ipa[] = $_SERVER['REMOTE_ADDR'];
if(isset($_SERVER['HTTP_X_REAL_IP']))$ipa[] = $_SERVER['HTTP_X_REAL_IP'];
// проверяем ip-адреса на валидность начиная с приоритетного.
foreach($ipa as $ips) // если ip валидный обрываем цикл, назначаем ip адрес и возвращаем его
if(is_valid_ip($ips)) return $ips;
return false;
}
function is_valid_ip($ip=null){
//if( !empty( $ip ) && filter_var( $ip, FILTER_VALIDATE_IP ) )
if(preg_match("#^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$#", $ip))
return true; // если ip-адрес попадает под регулярное выражение, возвращаем true
return false; // иначе возвращаем false
}
?>
Большинство API функций сервиса htmlweb.ru совершенно бесплатны. Идентификация нужна для исключения злоупотреблений и позволяет разделить количество запросов от разных пользователей. Ограничения на бесплатные запросы и тарификация описана здесь.
Для идентификации используется API_KEY из_профиля. API_KEY может быть передан как GET так и POST запросом.
Не размещайте ключ API_KEY в открытом доступе и в javascript.
Он фактически заменяет ваши логин пароль и дает возможность использовать весь функционал нашего сайта от вашего аккаунта, включая платные функции.
Ключи выбора формата:
- html - HTML-формат.
- json - JSON-формат
- xml - XML-формат
Для указания кодирования ответа в нужном вам формате добавьте в запрос параметр html или json или xml, например:
http://htmlweb.ru/geo/api.php?ip=IP_АДРЕС&html&charset=utf-8&api_key=xxxx
При возврате в формате JSON возврашается заголовок header('Access-Control-Allow-Origin: *') - разрешающий кроссдоменные запросы.
Ключ выбора кодировки charset=:
- windows-1251 по умолчанию всё отдается в кодировке utf-8
- utf-8 unicode - кодировка UTF-8. Пример: charset=utf-8
- а также другие: koi-8, ISO-8859-1, ISO-8859-15, cp866, cp1252, KOI8-R
fields
- какие поля включать в ответ, например:
http://htmlweb.ru/geo/api.php?ip=IP_АДРЕС&sql=pb_city&fields=id,name,english,area,rajon,country
Если Вам нужен другой формат или другая кодировка, а также обо всех найденных проблемах и пожеланиях сообщайте нам.
Структура API запроса для получения информации по ip адресу:
http://htmlweb.ru/geo/api.php?html&ip=IP_АДРЕС&api_key=API_KEY_из_профиля
Структура API запроса для получения информации по ip адресу в json-формате:
http://htmlweb.ru/geo/api.php?json&ip=IP_АДРЕС&api_key=API_KEY_из_профиля
Для получения информации о текущем ip укажите пустое значение ip:
http://htmlweb.ru/geo/api.php?html&ip&api_key=API_KEY_из_профиля
Для получения краткой информации укажите параметр short:
http://htmlweb.ru/geo/api.php?html&short&ip&api_key=API_KEY_из_профиля
Для получения дополнительной информации из регистрационной базы данных(Whois) укажите параметр whois:
http://htmlweb.ru/geo/api.php?html&whois&ip&api_key=API_KEY_из_профиля
Пример для получения информации в html-формате с Вашим API_KEY:
Ответ для html:
Город: Ростов-на-Дону (rostov-na-donu) Wiki Регион: Ростовская область Wiki, Областной центр: Ростов-на-Дону Округ: Южный федеральный округ Страна: Россия RU Wiki(Российская Федерация, Russia, ISO:643) , Столица Москва 1 Часть света: Европа Код страны(2): RU Код страны(3): RUS Широта: 47.233189 Долгота: 39.715000 Телефонный код страны: +7 Телефонный код города: 863 Автомобильный код региона: 61,161 Временная зона(Time Zone,UTC,GMT): +4 Осталось 50 запросов до 21:05:58 09.10.2013
Краткий (short) html-ответ:
Город: Ростов-на-Дону Регион: Ростовская область Округ: Южный федеральный округ Страна: Россия
Ответ для json:
{ 'ip':'93.178.64.171', 'country_id':'RU', 'country':'Россия', 'region_id':49, 'region':'Ростовская область', 'region_iso':'', 'okrug':'Южный федеральный округ', 'rajon':'', 'rajon_id':0, 'city_id':1711, 'city':'Ростов-на-Дону', 'city_english':'rostov-na-donu', 'city_telcod':863, 'latitude':'47.233189', 'longitude':'39.715000', 'autocod':'61,161', 'capital2_id':1711, 'capital2':'Ростов-на-Дону', 'fullname':'Российская Федерация', 'english':'Russia','country_code3':'RUS', 'iso':643,'country_telcod':7, 'location':'Европа','capital_id':1, 'capital':'Москва','time_zone':4, 'upd':'1373297221', 'limit':50 }
Краткий (short) json-ответ:
{ 'country_id':'RU', 'country':'Россия', 'region_id':49, 'region':'Ростовская область', 'okrug':'Южный федеральный округ', 'rajon_id':0, 'rajon':'', 'city_id':1711, 'city':'Ростов-на-Дону', 'limit':50 }
Параметр limit - определяет количество оставшихся запросов до конца суток
.
Прокомментировать/Отблагодарить