Регистрация Войти
Войти через VK




Поиск по сайту



PHP Поиск



Скрипт геотаргетинга. Геотаргетинг для сайта.

Когда Вам понадобится геотаргетинг для сайта, т.е. когда Вам будет нужно определить откуда ваш посетитель, чтобы предложить ему зависимые от его города условия, Вы можете воспользоваться представленным здесь скриптом геотаргетинга.

Для получения гео-положения посетителя Вы можете воспользоваться следующим скриптом геотаргетинга на основе 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 совершенно бесплатны. Идентификация нужна для исключения злоупотреблений и позволяет разделить количество запросов от разных пользователей. Ограничения на бесплатные запросы и тарификация описана здесь.

Мы предлагаем Вам два варианта идентификации:

  1. API_KEY из_профиля для обращения со стороны сервера из PHP. API_KEY может быть передан как GET так и POST запросом.
    Не размещайте ключ API_KEY в открытом доступе и в javascript. Он фактически заменяет ваши логин пароль и дает возможность использовать весь функционал Вашего аккаунта, включая платные функции.
  2. HTTP_REFERER для обращения из javascript. Для этого необходимо добавить домен, с которого Вы будете обращаться в Мои сайты. При этом параметр API_KEY НЕ должен передаваться в запросе. Для исключения несанкционированного обращения и невозможности подмены HTTP_REFERER проверяется ip адрес домена, с которого идет обращение. При переносе сайта или при смене ip адреса не забудьте обновить данные в Мои сайты.

Ключи выбора формата:

  1. html - HTML-формат.
  2. json - JSON-формат
  3. 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=:

  1. windows-1251 по умолчанию все отдается в кодировке windows-1251
  2. utf-8 unicode - кодировка UTF-8. Пример: charset=utf-8
  3. а также другие: 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:

http://htmlweb.ru/geo/api.php?html&ip&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 - определяет количество оставшихся запросов до конца суток


.

Популярное:


Содержание:


Новое за неделю



Сейчас на сайте: 1171
Rambler's Top100