InstantCMS 2.X
Автоопределение региона, города
- Предыдущая
- 1
- 2
- 3
- Показаны 31-32 из 32
Плюсану. Тоже думаю как реализовать автоопределение города и контента. Мысль такая, при добавлении контента берется айпишник автора и добавляется к контенту. При выводе контента пользователю, сравнивается геолокация по айпишнику и контент по локации выводиться вначале, потом идет по дате добавления. Кнопка в наборах к примеру Все новости выводит только по дате добавления, то есть без учета геолокации.
Доброе время суток. Подойдет ли такой код для определения Региона, Города ipgeobase.ru ?
1
Скрипт срабатывет 1 раз и далее уже берет значение из куков, это в разы уменьшает нагрузку.
2
/system/controllers/geo/iplookups/ipgeobase.php
1
/* Пример работы * [!ipgeobase? &info=`city`!] * Возможные параметры для info: inetnum, country, city, region, district, lat, lng * *[!if? &is=`[!ipgeobase!]:=:Москва` &then=`@TPL:имя_чанка`!] */ //проверяем есть ли куки //получаем ip пользователя $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; //запрашиваем информацию с сервера $url = "http://ipgeobase.ru:7020/geo?ip=".$ip; $xml = new SimpleXMLElement($xmlstr); //сохраняем все данные в куки $geo['inetnum'] = (string)$xml->ip[0]->inetnum; $geo['country'] = (string)$xml->ip[0]->country; $geo['city'] = (string)$xml->ip[0]->city; $geo['region'] = (string)$xml->ip[0]->region; $geo['district'] = (string)$xml->ip[0]->district; $geo['lat'] = (string)$xml->ip[0]->lat; $geo['lng'] = (string)$xml->ip[0]->lng; } else { $geo['inetnum'] = $_COOKIE['inetnum']; $geo['country'] = $_COOKIE['country']; $geo['city'] = $_COOKIE['city']; $geo['region'] = $_COOKIE['region']; $geo['district'] = $_COOKIE['district']; $geo['lat'] = $_COOKIE['lat']; $geo['lng'] = $_COOKIE['lng']; } return $geo[$info];
2
<?php /** * Возвращает информация об IP адресе */ function get_ip_info($ip) { $postData = " <ipquery> <fields> <all/> </fields> <ip-list> <ip>$ip</ip> </ip-list> </ipquery> "; { $ipinfo = new SimpleXMLElement($responseXml); return $ipinfo->ip; } return false; } // пример использования $ipinfo = get_ip_info($_SERVER['REMOTE_ADDR']); echo $ipinfo->city; // город echo $ipinfo->region; // регион echo $ipinfo->district; // федеральный округ РФ ?>
<?php class icmsIpgeobase { public static $title = 'ipgeobase.ru'; public static function detect ($ip) { $xml = file_get_contents_from_url('http://ipgeobase.ru:7020/geo?ip='.$ip); if(!$xml){ return false; } if(!$out){ return false; } foreach ($out->ip[0] as $key=>$value) { $data[$key] = (string)$value; } } return $data; } }
- Предыдущая
- 1
- 2
- 3
- Показаны 31-32 из 32