PHP: Получение страны, региона и города по IP адресу пользователя

Заметка для тех, кто хочет отображать территориальное положение своих посетителей.
Часто, разрабатывая сайт, нам необходимо отображать город посетителя сайта. Иногда это возможно сделать благодаря переменной $_SERVER, однако информация в ней присутствует не всегда или бывает неверной. Куда более точно определить текущий город и страну посетителя сайта можно с помощью IP адреса. На данный момент существует огромное количество бесплатных сервисов, которые предоставляют территориальную информацию по айпи адресу. Ниже я приведу код, получения страны, региона и города посетителя сайта с помощью одного из таких сервисов.

function getIpInfo($ip) {
    $curl = curl_init();
    if($curl) {
      curl_setopt($curl, CURLOPT_URL, 'http://194.85.91.253:8090/geo/geo.html');
      curl_setopt($curl, CURLOPT_POSTFIELDS, "$ip");
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
      $response = curl_exec($curl);
      curl_close($curl);
      if (substr($response, 0, 5) == '<?xml') {
          $xml = new SimpleXMLElement($response);
          return $xml->ip;
      }
    } //Ошибка инициализации CURL, возможно у Вас не установлена библиотека
    return false;
}

$info = getIpInfo($_SERVER['REMOTE_ADDR']);
echo $info->city; // город
echo $info->region; // регион
echo $info->district; // федеральный округ РФ
Запись опубликована в рубрике PHP с метками , , , , , , , , . Добавьте в закладки постоянную ссылку.